Comment transformer un pdf en pdf interrogeable par texte?

20

J'ai un certain nombre de documents numérisés en pdf et je veux pouvoir les rechercher. Comment puis je faire ça?

Essentiellement, je dois OCR le pdf, puis mélanger le texte extrait dans un nouveau pdf. J'ai essayé sans succès un certain nombre de solutions différentes (y compris celles trouvées dans Ajouter des informations OCR à un PDF ).

  1. pdfocr (qui me donne ce numéro: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (dont le centre logiciel dit que c'est un mauvais paquet et que je ne devrais pas l'installer)
  3. OCRfeeder (dans le centre du logiciel) exporte bien vers odt, mais ne réagit pas lors de l'exportation au format PDF.
  4. Gscan2pdf exporte une image entièrement noire (mais consultable) comme indiqué dans cette discussion .
  5. Je ne pense pas que la visionneuse Pdfxchange puisse gérer faire ocr à la volée sur des fichiers de plus de 500 pages.

Existe-t-il un progiciel que je ne connais pas? Ou un script qui fait ça?

don.joey
la source
3
Je ne l'ai pas encore essayé moi-même, mais j'ai vu ce projet être recommandé dans le passé.
Glutanimate
Je viens d'écrire pdf2searchablepdf. Cela dépend tesseract. Ça marche bien. Super facile à utiliser. Vois ici. askubuntu.com/a/1187881/327339
Gabriel Staples

Réponses:

12

Ubuntu <16.04

Suite au commentaire de Glutanimate, j'ai trouvé une solution de travail. Il s'agit du 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 en parallèle. Cela peut être fait (en suivant /ubuntu//a/298598/115155 ) avec (la deuxième ligne est facultative et dépend de votre saveur 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

S'il semble que la commande ne répond pas, vous pouvez augmenter la verbosité en utilisant l' -vindicateur (qui peut être utilisé de manière incrémentielle comme -vvou -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

Ubuntu> = 16.04

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

S'il semble que la commande ne répond pas, vous pouvez augmenter la verbosité en utilisant l' -vindicateur (qui peut être utilisé de manière incrémentielle comme -vvou -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 œil au nouveau Github Repo .

don.joey
la source
Accepteriez-vous votre réponse, pour la résoudre? (Afin qu'elle ne figure pas dans la liste sans réponse)
Utilisateur enregistré le
Juste sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFpour Ubuntu 16.04
Martin Thoma
1
Pour Ubuntu 16.10 et versions ultérieures, vous pouvez simplement le faire sudo apt install ocrmypdf.
endolith
6

@ 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 langues tesseract 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, installez-le. Par exemple,

sudo apt install tesseract-ocr-spa

Vous pouvez maintenant produire un PDF interrogeable (dont la qualité variera en fonction du document numérisé) avec 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.

Ludenticus
la source
Ayez mon upvote monsieur!
don.joey
4

pdfsandwicheffectue exactement ce travail. Je ne savais pas qu'il y avait un package fourni dans le centre logiciel, mais je fournis des packages 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 actuellement la plus récente (0.1.2), qui ne devrait pas encore être dans un centre logiciel.

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.pdfavec le texte reconnu ajouté aux pages numérisées.

Par rapport à la plupart des solutions existantes, il détecte automatiquement la version tesseract installée et adapte son comportement en conséquence. De plus, il effectue un prétraitement des images numérisées avant le processus d'OCR, tel que le désalignement ou la suppression des bords sombres, etc., ce qui peut considérablement améliorer la reconnaissance optique des caractères.

AVERTISSEMENT: Je suis le développeur de pdfsandwichet donc fortement biaisé.

Tobias Elze
la source
Cela semble génial, mais pourquoi la version 0.1.4 de pdfsandwich installée à l'aide d'apt-get convertit-elle chaque caractère en un rectangle noir pour moi sur Ubuntu 16.04?
Valentas
1
C'est difficile de répondre sans plus de détails. Tout d'abord, je recommande d'utiliser une version plus récente de l'outil. La version actuelle est 0.1.6. Vous pouvez trouver les packages deb pour Ubuntu sur le site Web. Deuxièmement, si cela ne vous aide pas, vous pouvez utiliser l'option -verbose pour obtenir plus de détails et utiliser ces détails pour déposer un rapport de bogue.
Tobias Elze
quelques problèmes pour moi. convertir: tentative d'effectuer une opération non autorisée par la politique de sécurité `PDF '@ error / constituent.c / IsCoderAuthorized / 408. j'ai donc dû installer imagemagick à partir de la source téléchargée depuis imagemagick.org/script/install-source.php puis j'ai eu une erreur lors du chargement des bibliothèques partagées: libMagickCore-7.Q16HDRI.so.6: impossible d'ouvrir le fichier d'objet partagé: " fichier ou répertoire "" et cette solution a fonctionné en exécutant "sudo ldconfig / usr / local / lib" la version imagemagick est 7.0.8-56 obtenue par "identifier -version".
pierrely
peut être utile d'ajouter ces utilitaires si vous prévoyez de manipuler ou de rogner des fichiers PDF. 1. pdfshuffler pour diviser les pages gauche et droite (des originaux recto verso) 2. Chaîne pdf pdftk Utilisez pdftk (comme fichier jar) pour diviser le fichier en pages paires et impaires séparément: 4 pour découper les pages pdfquench - J'avais aussi besoin de gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich a fonctionné un régal, réduit la taille du fichier de 10 fois aussi. Merci. Ubuntu 19.04 également pdfsam à fractionner et fusionner, exécutez un fichier jar Java après avoir téléchargé
pierrely
0

OCRfeeder a un bug dans

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

la ligne 436 devrait se lire:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

changé cela et cela a fonctionné pour moi

AndreR
la source
0

OS: Ubuntu 18.04

Tout d'abord, installez tesseract-ocravec:

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 allez utiliser une langue autre que l'anglais avec tesseract, vous devrez alors installer le package laguage correspondant. Par exemple pour le portugais, vous devrez faire:

sudo apt-get install tesseract-ocr-por

Sinon, vous obtiendrez 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 utilisez Google "tesseract PDF", vous trouverez probablement ce message quelque peu dépassé . Cependant, il vous donne quelques conseils utiles. Vous devrez d'abord convertir votre .pdffichier en un .tiffseul. Courir:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

Si, comme dans le post 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}

Vous pouvez maintenant 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é sera nommé output.pdf. Si, par exemple, votre PDF est en français, après avoir installé le correspondant tesseract-ocr-fra, vous exécuterez:

tesseract -l fra newfile.tiff output pdf 

Et le fichier souhaité sera, encore une fois output.pdf,.

evaristegd
la source
0

J'ai eu ce même problème alors j'ai écrit ça pendant le week-end. Donner un coup de feu; ça marche super! C'est un simple emballage autour tesseract. Il utilise pdftoppmpour convertir un PDF en un tas de fichiers TIFF, puis il utilise tesseractpour effectuer l'OCR (Optical Character Recognition) sur eux et produire un PDF consultable en sortie. Tous les fichiers temporaires intermédiaires sont automatiquement supprimés à la fin du script.

Code source: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Instructions d'installation et d'utilisation pdf2searchablepdf:

Testé sur Ubuntu 18.04 le 11 novembre 2019.

Installer:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

Utilisation:

pdf2searchablepdf mypdf.pdf

Vous aurez maintenant un pdf appelé mypdf_searchable.pdf , qui contient du texte consultable!

Terminé. Le wrapper n'a pas de dépendances python, car il est actuellement entièrement écrit en bash.

Références ou ressources connexes:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Comment transformer un pdf en pdf interrogeable par texte?
  3. Quelle est la meilleure et la plus simple solution d'OCR?
  4. Extraire des images incorporées d'un PDF
  5. pdfsandwich : wrapper logiciel alternatif que je viens de découvrir, cela vaut également la peine d'être vérifié! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [comment transformer un PDF en un tas d'images avec pdftoppm] Extraire des images intégrées d'un PDF
Gabriel Staples
la source