J'ai quelques fichiers PDF que je souhaite diviser en fichiers TIFF à l'aide de convert
(afin de pouvoir effectuer une ROC via tesseract
name__). Jusqu'ici, cela fonctionne très bien - sauf que pour automatiser l'ensemble du processus, je dois définir le DPI de la sortie convert
name__. En ce moment, j'utilise une commande comme celle-ci:
convert -density 300 myFile.pdf -depth 8 -background white output-%04d.tiff
... qui sort les fichiers PDF à 300 DPI. Cependant, certains PDF fichiers ont plus faible DPI (par exemple, 150 DPI), ce qui signifie que je ne souhaite pas les imprimer à 300 DPI via convert
- cela crée des fichiers TIFF excessivement volumineux sans toute information supplémentaire.
Je sais qu'il est possible de vérifier le DPI des images dans un fichier PDF en ouvrant Adobe Acrobat et en bousillant les outils de "contrôle en amont". Cependant, y a-t-il un moyen de déterminer via la ligne de commande le DPI d'un fichier PDF particulier?
Depuis que je suis intéressé par le même type de travail (mais pas nécessairement pour OCR les fichiers PDF, mais pour les convertir en DjV et alors les OCR), j’ai trouvé cette question et les réponses manquantes (car j’avais besoin de deviner le DPI des images avec le nombre de pixels, puis d’utiliser la taille en sortie de pdfinfo
ou d'autres astuces --- sans oublier que les images à l'intérieur d'un PDF peuvent avoir des densités différentes, etc.).
Après beaucoup de recherches, j'ai trouvé que vous pouvez utiliser pdfimages
(du paquet poppler-utils ) comme suit:
$ 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%
Notez les x-ppi
et y-ppi
dans la liste ci-dessus. Il indique également le format dans lequel les images sont stockées dans le fichier PDF, ce qui est pratique (parfois, il s’agit de JBIG2, parfois de JPEG2000, etc.)
Remarque: le fichier deptest.pdf
utilisé ci-dessus est disponible à partir du référentiel de pdfsizeopt
.
Après cela, vous pouvez simplement extraire les images avec pdfimages
lui-même ou utiliser pdftoppm
(également à partir de poppler-utils
) pour restituer des pages entières dans de nombreux formats de votre choix (par exemple, tiff, pour la numérisation avec tesseract
).
Vous pouvez utiliser quelque chose comme ceci (en supposant que vous ayez créé un répertoire nommé imgs
où vous placerez vos images):
pdfimages -png Faraway-PRA.pdf imgs/prefix
Les fichiers seront créés dans le répertoire imgs
avec des noms commençant par prefix
, comme dans:
$ 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
(...)
Vous pouvez alors effectuer toute opération chirurgicale que vous jugerez appropriée avec des outils tels que scantailor
ou ce que vous voudrez.
Si vous souhaitez simplement faire de la ROC sur un fichier PDF, vous pouvez utiliser un programme bien géré et déjà fourni, à savoir ocrmypdf .
J'avais besoin de cette information et je l'ai juste trouvée ici:
http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=1611
Cette technique utilise également ImageMagick:
identify -format "%w x %h %x x %y" DAT_1.tif
La sortie est la taille de l'image et le dpi:
2480 x 3507 300 x 300
J'utilise la commande suivante:
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
et ça retourne:
Size: 380x380