Ajout d'informations OCR à un PDF

28

J'ai une bonne numérisation d'un document; cette numérisation est au format pdf.

Comment puis-je ajouter des informations ocr au pdf, afin qu'elles deviennent consultables? Par recherche, je veux dire que le but est que lors de la visualisation du pdf avec evince, CTRL-F me permet en fait de rechercher dans le contenu du pdf.

fdierre
la source
4
@Jakob, je ne pense pas que ce soit un dupe, nous demandons des choses différentes. L'autre question concerne l'extraction de texte à partir de certains pdf (c'est-à-dire la génération de fichiers txt correspondants), tandis que ma question concerne la modification du pdf afin d'ajouter des informations ocr et de faire fonctionner la fonction de recherche dans le lecteur pdf. Je vais clarifier la question.
fdierre
Comment et qu'avez-vous utilisé pour numériser le document?
Mitch
@Mitch J'ai utilisé mon imprimante / copieur / scanner Ricoh Aficio MP-C2500, qui a un très bon chargeur de documents. :-)
fdierre
Logiciel de numérisation et / ou OCR?
Mitch

Réponses:

21

pdfsandwich

Fait ce que vous voulez et fournit des paquets deb Ubuntu. Il utilise tesseract comme moteur OCR. L'appel suivant ajoute la couche de texte à votre PDF numérisé:

pdfsandwich scanned.pdf

Ce qui suit fait la même chose mais avec une autre langue (code ISO 639-2, tesseract-ocr-LANGCODEpackage de téléchargement ) et la mise en page:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Si vous obtenez une erreur, veuillez télécharger la dernière version deb de Sourceforge .

Avertissement: je suis le développeur de pdfsandwich et donc évidemment biaisé.

Tobias Elze
la source
6
C'est vraiment super, merci. Cependant, il semble modifier les images, il semble qu'il exécute un masque flou sur elles ou quelque chose. Existe-t-il un moyen de laisser les images telles qu'elles étaient auparavant? Dans mon cas particulier, le filtre a même réussi à supprimer la barre de quelques fractions dans certaines équations. Tout le reste fonctionne plutôt bien ...
naught101
Paquet de mauvaise qualité: `Lintian vérifie les résultats pour /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: control-file-has-bad-permissions md5sums 0664! = 0644 E: pdfsandwich: control-file-has-bad-owner md5sums james / james! = root / root E: pdfsandwich: mauvais fichier-propriétaire-uid-ou-gid usr / 1000/1000 E: pdfsandwich: mauvais fichier-propriétaire-uid-ou-gid usr / bin / 1000 / 1000 E: pdfsandwich: mauvais fichier-propriétaire-uid-ou-gid usr / bin / pdfsandwich ...
AB
Téléchargez la dernière version deb de SF . Si vous obtenez une erreur à la fin, cela peut être lié à ghostscript (v0.1.4). Maintenant v0.1.6 utilise pdfunite.
Pablo A
1
@PabloBianchi Existe-t-il un moyen de relire manuellement le texte OCR en utilisant pdfsandwitch? Je fais cela avec certains documents suédois, et cela fonctionne bien, à l'exception de quelques fautes d'orthographe (probablement à cause de la police de l'original) qui seraient faciles à corriger s'il s'agissait d'un fichier texte, mais comment puis-je le faire dans le PDF résultant ?
zrajm
@zrajm vous pouvez utiliser certains des paramètres pdfsandwich pour une meilleure reconnaissance à l'étape OCR. Pour modifier le texte caché derrière l'image d'un PDF, vous pouvez simplement modifier le calque des zones de texte avec LibreOffice Draw, Inkscape ou tout autre outil d'édition PDF. Si vous trouvez un meilleur moyen, veuillez le poster ici. DaH jImej!
Pablo A
4

J'ai trouvé une solution non idéale, mais très efficace.

J'utilise PDF X-Change Viewer via Wine. Il dispose d'une fonction OCR qui ajoute une couche de texte au pdf basé sur l'image existant.

Ainsi, vous pouvez rechercher et copier du texte à partir de ce calque invisible.

entrez la description de l'image ici

Faire
la source
2

Pour une solution en ligne de commande, vous pouvez utiliser pdfocr .

En bref, installez le logiciel:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Exécutez ensuite pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Cela a fonctionné pour moi sur Ubuntu 12.04 LTS.

Robert Citek
la source
6
Github ici: github.com/gkovacs/pdfocr . Mais cela a le même problème que pdfsandwich, car il modifie / compresse les fichiers PDF contenant des images de haute résolution, détruisant essentiellement certaines des informations d'image d'origine.
jmiserez
2

OCRmyPDF est une solution facilement implémentable et fournissant un fichier PDF de sortie avec la même qualité de fichier d'entrée et une taille raisonnable:

https://github.com/jbarlow83/OCRmyPDF

user127022
la source
J'ai eu d'excellents résultats avec votre script. Contrairement à pdfocr de Geza Kovacs, il ne nécessite aucune bibliothèque supplémentaire (difficile à compiler dans certaines distributions Linux!). Merci!
Maxim
0

Ceci est ma solution rapide et sale sur la base de ImageMagick convert, tesseract, parallelet pdftk(toutes disponibles sur les distributions basées sur debian-). Il est largement basé sur cet article de blog .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf
stefanct
la source
0

Pour un répertoire entier avec des fichiers ppm, vous pouvez utiliser ce script ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
PetaT
la source