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.
0 de 2.000.000 caracteres
Contrato de prova
Detectar não é corrigir silenciosamente.
- 01Cole somente uma saída autorizada ou use um controle sintético.
- 02Declare tokens críticos antes da comparação, quando houver fonte.
- 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.