Se você digitalizar uma página com texto em um PDF e executar um aplicativo OCR nele, o texto será adicionado à página, mas o "modo de renderização de texto" será definido como invisível. Está lá, mas não é renderizado na tela (ou no papel, se impresso). O que você vê ou imprime é a imagem digitalizada original.
Como podemos tornar o texto invisível visível?
Bem, podemos editar o PDF ... O código PDF para definir a renderização de texto como invisível é o seguinte:
3 Tr
Ainda não é possível encontrar essa sequência no from_abbyy.pdf original nem no from_ghostscript.pdf porque partes dos PDFs estão compactadas. Por isso, descompacte-os o máximo possível com a ajuda de qpdf
:
qpdf \
--qdf \
from_abbyy.pdf \
qdf--from_abbyy.pdf
qpdf \
--qdf \
after_ghostscript.pdf \
qdf--after_ghostscript.pdf
Agora podemos encontrar a string acima facilmente (e há apenas uma ocorrência em cada arquivo).
Vamos mudar para um dos modos visíveis de renderização de texto. No geral, podemos escolher entre estes 8 modos de renderização de texto:
0 - fill glyph shapes
1 - stroke glyph shapes
2 - fill, then stroke glyph shapes
3 - neither fill nor stroke glyph shapes (invisible)
4 - fill and add to path for clipping glyph shapes
5 - stroke glyph shapes and add to path for clipping
6 - fill, then stroke glyph shapes and add path for clipping
7 - add glyph shapes to path for clipping
Se eu usar o modo "preenchimento", o texto do OCR provavelmente não parecerá tão bom em cima da imagem de digitalização subjacente. Portanto, eu prefiro a variante "stroke". Então eu simplesmente mudo acima da linha para ler
1 Tr
Olhando para este PDF modificado, não gosto, porque a largura de linha padrão é muito grossa para o meu gosto. Além disso, a cor do traçado do contorno é preta (padrão); Eu prefiro o vermelho para contrastar com as formas originalmente digitalizadas. Portanto, adiciono algum código à frente desta linha que define a largura da linha para um quarto de ponto:
.25 w
e outra para definir a cor do traçado como vermelho:
1 0 0 RG
A linha completa agora é a seguinte:
.25 w 1 0 0 RG 1 Tr
Isso é tudo.
Observe que nossa pouca manipulação danificou o arquivo, porque seu "sumário" (em termos técnicos: sua xref
tabela) não será mais válido. No entanto, o Acrobat Reader ou o Acrobat Professional ainda o abrirão (sem se queixar) e silenciosamente "repararão" a seção xref do arquivo. Outros visualizadores de PDF podem rejeitar o arquivo, mas por enquanto não nos importamos ...
Aqui estão as capturas de tela do resultado:
(A primeira captura de tela é ampliada na largura da janela.)
(A segunda captura de tela é ampliada em 800%.)
Os contornos vermelhos são o texto digitalizado tornado visível agora, exatamente como queríamos.
Realizei o mesmo procedimento descrito acima para os arquivos from_abbyy.pdf e after_ghostscript.pdf . Abri os dois resultados em duas instâncias diferentes do Acrobat Reader. Se fizermos os dois ampliarem para o mesmo valor e maximizarem as duas janelas, é fácil alternar a visualização entre os dois arquivos via [alt]+[tab]
. Essa é uma boa maneira de revelar até as melhores diferenças de renderização entre dois arquivos PDF.
Meu resultado é: não há nem um único pixel diferente entre a entrada do Ghostscript (v9.02) e sua saída para este arquivo. Mas há uma grande diferença se você deseja copiar e colar texto ...