Eu uso o seguinte comando:
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
e retorna:
Size: 380x380
Eu tenho alguns arquivos PDF que quero dividir em arquivos TIFF usando convert
(para o OCR via tesseract
). Isso até agora está funcionando muito bem - exceto que, para automatizar todo o processo, preciso definir o DPI da saída convert
. No momento, estou usando um comando assim:
convert -density 300 myFile.pdf -depth 8 -background white output-%04d.tiff
... que gera os arquivos PDF em 300 DPI. No entanto, alguns arquivos PDF têm menor DPI (por exemplo, 150 DPI), o que significa que não quero gerá-los em 300 DPI via convert
- isso cria arquivos TIFF excessivamente grandes sem nenhuma informação adicional.
Sei que existem maneiras de verificar o DPI de imagens em um arquivo PDF abrindo o Adobe Acrobat e mexendo nas ferramentas de "comprovação". No entanto, existe uma maneira de determinar, por meio da linha de comando, o DPI de um determinado arquivo PDF?
Eu uso o seguinte comando:
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
e retorna:
Size: 380x380
Eu precisava desta informação e encontrei-a aqui:
link
Esta técnica também usa o ImageMagick:
identify -format "%w x %h %x x %y" DAT_1.tif
A saída é o tamanho da imagem e o dpi:
2480 x 3507 300 x 300
Desde que eu estou interessado no mesmo tipo de trabalho (embora não necessariamente para OCR os arquivos PDF, mas para convertê-los para DjVu e então OCR-los), eu encontrei esta questão e as respostas falta (desde que eu precisava adivinhar o DPI das imagens com o número de pixels e, em seguida, usar o tamanho como saída por pdfinfo
ou outros truques --- sem mencionar que as imagens dentro de um PDF pode ter diferentes densidades, etc.).
Depois de muitas pesquisas, descobri que você pode usar pdfimages
(do pacote poppler-utils ) da seguinte forma:
$ pdfimages -list deptest.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 100 100 gray 1 1 image no 9 0 53 53 169B 14%
2 1 image 100 100 gray 1 1 ccitt no [inline] 53 53 698B 56%
Observe o x-ppi
e y-ppi
na listagem acima. Ele também lista o formato no qual as imagens são armazenadas no PDF, o que é legal (às vezes, é JBIG2, às vezes JPEG2000 etc.)
Depois disso, você pode simplesmente extrair as imagens com pdfimages
ou usar pdftoppm
(também de poppler-utils
) para renderizar páginas inteiras em vários formatos que você possa gostar (por exemplo, tiff, para digitalizar com tesseract
).
Você pode usar algo como o seguinte (supondo que você tenha criado um diretório chamado imgs
onde você colocará suas imagens):
pdfimages -png Faraway-PRA.pdf imgs/prefix
Os arquivos serão criados dentro do diretório imgs
com nomes começando com prefix
, como em:
$ ls
prefix-000.png prefix-047.png prefix-094.png prefix-141.png
prefix-001.png prefix-048.png prefix-095.png prefix-142.png
prefix-002.png prefix-049.png prefix-096.png prefix-143.png
prefix-003.png prefix-050.png prefix-097.png prefix-144.png
(...)
Você pode, então, realizar qualquer cirurgia que considere adequada com ferramentas como scantailor
ou o que quiser.
Se você quiser apenas OCR de um arquivo PDF, você pode usar um programa que é bem mantido e já embalado, ou seja, ocrmypdf .