PDF → Markdown · corrupção silenciosa

Texto não vazio ainda pode estar corrompido.

Um conversor pode retornar sucesso e mesmo assim inserir NUL, U+FFFD, mojibake ou perder expoentes e caracteres de outros alfabetos. Faça o gate antes de RAG, banco ou automação.

Um relato reproduzível no Docling mostrou 12 caracteres NUL e truncamento silencioso ao gravar Markdown em SQLite. A fixture BRAINIALL abaixo isola superscritos e controles sem reutilizar o PDF de terceiros do relato.

Processamento local · saída não enviada · evidência sem conteúdo

Scanner local · nenhum upload

Encontre corrupção que uma saída “não vazia” esconde.

Procure NUL, U+FFFD, controles invisíveis, surrogates isolados, mojibake provável e tokens Unicode que deveriam ter sobrevivido. O texto permanece neste navegador.

Controles reproduzíveis

0 de 2.000.000 caracteres

Contrato de prova

Detectar não é corrigir silenciosamente.

  1. 01Cole somente uma saída autorizada ou use um controle sintético.
  2. 02Declare tokens críticos antes da comparação, quando houver fonte.
  3. 03Revise o PDF original; o scanner não reescreve nem “conserta” conteúdo.

Escopo e limites

PASS prova que o Markdown é fiel ao PDF?

Não. Ele só prova ausência das sentinelas checadas e presença dos tokens declarados.

Mojibake é sempre corrupção?

Não. O padrão é heurístico e deve ser conferido contra o documento de origem.

O scanner faz OCR ou upload?

Não. Ele examina texto localmente e não recebe PDF, token, conta ou Markdown.

Por que testar um round trip no SQLite?

Porque um export pode declarar sucesso e ainda conter U+0000. O gate exige zero NUL, tokens esperados presentes e o mesmo comprimento após gravar e ler o campo TEXT.

Qual é a evidência externa?

O caso que motivou esta regressão está no issue público docling-project/docling#3858. BRAINIALL não é afiliada ao projeto e não afirma que a fixture reproduz o defeito específico do Docling.