Skip to content

Decidir o futuro do pdf-parse: a v2 É o pdfjs-dist e colapsa a redundância de duas engines do RAG #238

Description

@melgarafael

O Dependabot propôs pdf-parse 1.1.4 → 2.4.5 (#213, fechado). O verify reprovou com

lib/ai/rag/extractors/pdf.ts(26,50): error TS2339: Property 'default' does not exist

porque a v2 é reescrita e exporta a classe PDFParse, não uma função default. Adaptar isso seria pequeno. O que fez o PR ser fechado é outra coisa:

"pdf-parse@2.4.5": { "dependencies": { "@napi-rs/canvas": "0.1.80", "pdfjs-dist": "5.4.296" } }

O pdf-parse@2 É o pdfjs-dist. E lib/ai/rag/extractors/pdf.ts é, por desenho, duas engines independentes:

Primary : pdf-parse
Fallback: pdfjs-dist legacy build (handles layout-heavy/scanned PDFs)

Aceitar o bump colapsa as duas na mesma engine: o fallback deixa de ser fallback, e o PDF que a v5 não lê a v6 também não lê. Medido nos lockfiles:

pdfjs-dist
main 6.2.108
com pdf-parse@2.4.5 5.4.296 e 6.2.108 (36 MB + 34 MB)

Mais @napi-rs/canvas, que é binário nativo — assunto da imagem Docker do self-host.

A decisão

  • (a) Ficar em pdf-parse@1 e manter duas engines de verdade. Custo: uma dependência parada numa major antiga.
  • (b) Largar o pdf-parse e usar pdfjs-dist@6 direto (já está aqui). Aí a segunda tentativa passa a ser outra coisa, ou some conscientemente, e o pdf.ts fica honesto sobre quantas tentativas tem.

O dado que decide é qual das engines extrai melhor os PDFs reais que passam pelo RAG — e isso precisa de corpus, não de leitura de código. Enquanto ninguém medir isso, (a) é o default seguro.

Contexto que pesa: pdf.ts:45 registra que o fallback já esteve inalcançável por um return antes de ler o primeiro byte. Alguém já pagou por essa redundância não funcionar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions