PDF é um documento gráfico vetorial. Pode ser renderizado em qualquer resolução.
Uma imagem rasterizada incorporada em um documento PDF (como é típico de um documento digitalizado básico) normalmente terá uma resolução (quantos pixels em uma polegada do documento quando impressa em papel). Um desses documentos em PDF pode ter várias dessas imagens (se for um documento de várias páginas), possivelmente com diferentes resoluções e orientações.
Não é isso que o ImageMagick identify -v
relatórios. Esse 72dpi é a resolução usada para converter o PDF em uma imagem rasterizada, de modo a relatar informações de pixel sobre ele.
Você notará que realmente é executado: gs ... -r72x72 ...
por isso.
pdfimages
pode relatar todas as imagens rasterizadas em um documento PDF:
$ pdfimages -list scan.pdf
page num type width height color comp bpc enc interp object ID
---------------------------------------------------------------------
1 0 image 1219 1707 rgb 3 8 jpeg no 8 0
$ qpdf --show-pages --with-images scan.pdf
page 1: 3 0 R
images:
/Im0: 8 0 R, 1219 x 1707
content:
4 0 R
Isso lhe dá o tamanho em pixels, mas não o tamanho (em mm
ou inch
) da caixa em que a imagem seria impressa, para que você não obtenha a resolução disso.
Do ID do objeto ( 8 0
acima), você pode descobrir a dimensão do container:
$ mutool show scan.pdf grep | grep 'Im0 8 0'
scan.pdf:3: <</Contents 4 0 R/CropBox[0 0 595 842]/MediaBox[0 0 595 842]/Parent 2 0 R/Resources<</XObject<</Im0 8 0 R>>/ProcSet 6 0 R>>/Thumb 11 0 R/Type/Page>>
Então, aqui, sabemos que a imagem é renderizada em 595x842 pt (um ponto sendo 1/72 de polegada).
Então, podemos derivar a resolução xey:
$ echo "$((1219 * 72 / 595))dpi" "$((1707 * 72 / 842))dpi"
147dpi 145dpi
Observe que, quando incorporado como JPG, as imagens podem ter um cabeçalho EXIF que especifica a resolução.
Você pode extrair as imagens para descobrir isso:
$ exiftool -XResolution -YResolution <(qpdf --show-object=8 --raw-stream-data scan.pdf)
X Resolution : 72
Y Resolution : 72
Aqui eles não correspondem embora.
Você também pode extrair as imagens e com pdfimages
e passe isso para o seu OCR para que ele não tenha que decidir sobre uma resolução antes de se converter em uma imagem rasterizada.