J'ai un certain nombre de documents scannés en pdf et je veux pouvoir les chercher. Comment puis je faire ça?
Essentiellement, je dois OCR le pdf, puis fusionner le texte extrait dans un nouveau pdf. J'ai essayé sans succès différentes solutions (y compris celles trouvées dans Ajout d'informations OCR à un fichier PDF ).
Existe-t-il un logiciel que je ne connais pas? Ou un script qui fait ça?
Suite au commentaire de Glutanimate, j'ai trouvé une solution efficace. C'est le script OCRmyPDF .
git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h # to see the usage
Si vous recevez un message vous invitant à installer GNU parallèle. Cela peut être fait (après https://askubuntu.com/a/298598/115155 ) avec (la deuxième ligne est facultative et dépend de votre version et de votre version):
Sudo apt-get install parallel
Sudo rm /etc/parallel/config
Enfin, vous pouvez OCR votre pdf avec la commande:
sh ./OCRmyPDF.sh input.pdf output.pdf # change input and output to the files you want
Si la commande semble ne pas répondre, vous pouvez augmenter la verbosité à l'aide de l'indicateur -v
(qui peut être utilisé de manière incrémentielle comme -vv
ou -vvv
). Il serait peut-être préférable de tester d'abord les résultats sur un fichier PDF plus court. Vous pouvez raccourcir un pdf comme suit:
pdftk A=input.pdf cat A1-5 output output.pdf
Depuis Ubuntu 16.04, OCRmyPDF est disponible via apt. Il suffit de courir
Sudo apt install ocrmypdf
ocrmypdf -h # to see the usage
Enfin, vous pouvez OCR votre pdf avec la commande:
ocrmypdf input.pdf output.pdf # change input and output to the files you want
Si la commande semble ne pas répondre, vous pouvez augmenter la verbosité à l'aide de l'indicateur -v
(qui peut être utilisé de manière incrémentielle comme -vv
ou -vvv
). Il serait peut-être préférable de tester d'abord les résultats sur un fichier PDF plus court. Vous pouvez raccourcir un pdf comme suit:
pdftk A=input.pdf cat A1-5 output output.pdf
Si vous avez des questions, jetez un coup d'oeil au nouveau Github Repo .
pdfsandwich
effectue exactement ce travail. Je ne savais pas qu'il y avait un paquet fourni dans le centre logiciel, mais je fournis les paquetages deb Ubuntu pour cela sur le site Web du projet (voir http://www.tobias-elze.de/pdfsandwich/ pour plus de détails), y compris la version la plus récente (0.1.2), qu’il est peu probable de trouver dans un centre de logiciel pour le moment.
Si vous avez un fichier numérisé scanned_file.pdf
, appelez simplement
pdfsandwich scanned_file.pdf
qui génère le fichier scanned_file_ocr.pdf
avec le texte reconnu ajouté aux pages numérisées.
Par rapport à la plupart des solutions existantes, il détecte automatiquement la version de tesseract installée et adapte son comportement en conséquence. En outre, il effectue un prétraitement des images numérisées avant le processus d'OCR, tel que le désalignement, l'élimination des bords sombres, etc., ce qui peut améliorer considérablement la reconnaissance optique des caractères.
AVERTISSEMENT: Je suis le développeur de pdfsandwich
et donc fortement biaisé.
@ don.joey a répondu avec le script ocrmypdf. Cependant, il peut être installé directement maintenant (à partir de 16.10).
Sudo apt install ocrmypdf
Ensuite, vous devez installer les tesseract langues dont vous avez besoin.
Pour répertorier les langues déjà présentes dans votre système, tapez:
tesseract --list-langs
Si vous en manquez un, installez-le. Par exemple,
Sudo apt install tesseract-ocr-spa
Vous pouvez maintenant créer un PDF interrogeable (dont la qualité varie en fonction du document numérisé) à l'aide de la commande suivante
ocrmypdf -l 'spa' old.pdf new.pdf
Vous pouvez bien sûr consulter sa page de manuel pour des options supplémentaires.
OS: Ubuntu 18.04
Commencez par installer tesseract-ocr
avec:
apt-cache show tesseract-ocr
Sudo apt-get update && Sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
Sudo !!
Si vous utilisez une langue autre que l'anglais avec tesseract, vous devrez installer le package correspondant de laguage. Par exemple pour le portugais, vous devrez faire:
Sudo apt-get install tesseract-ocr-por
Sinon, vous aurez l'erreur:
Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.
Si vous "tesseract PDF" sur Google, vous trouverez probablement ceci message quelque peu obsolète . Cependant, cela vous donne des indications utiles. Vous devrez d’abord convertir votre fichier .pdf
en un .tiff
. Courir:
convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff
Si, comme dans le message obsolète, vous oubliez d'ajouter alpha -Off
, vous obtiendrez l'erreur suivante:
Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}
Maintenant, vous pouvez exécuter la commande finale. Dans le cas particulier où votre PDF d'origine est en portugais, vous aurez besoin de cette commande:
tesseract -l por newfile.tiff output pdf
Le fichier généré s'appellera output.pdf
. Si, par exemple, votre PDF est en français, après avoir installé le tesseract-ocr-fra
correspondant, vous exécuterez:
tesseract -l fra newfile.tiff output pdf
Et le fichier désiré sera, encore une fois, output.pdf
.
OCRfeeder a un bogue dans
/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py
la ligne 436 devrait se lire comme suit:
lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
# lines = '\n'.split(asUnicode(stuff).strip())
cela a changé et cela a fonctionné pour moi