web-dev-qa-db-fra.com

Comment extraire du texte avec OCR d’un PDF sous Linux?

Comment extraire le texte d'un PDF qui n'a pas été construit avec un index? C'est tout le texte, mais je ne peux rien rechercher ou sélectionner. Je suis sous Kubuntu, et Okular ne possède pas cette fonctionnalité.

41
hsribei

J'ai eu du succès avec le portage sous Linux sous licence de Cuneiform OCR.

Aucun paquet binaire ne semble être disponible, vous devez donc le compiler à partir des sources. Assurez-vous que les bibliothèques ImageMagick C++ sont installées pour prendre en charge essentiellement tous les formats d'image en entrée (sinon, il n'acceptera que le format BMP).

Bien qu'il semble être essentiellement non documenté en dehors d'un bref fichier README, j'ai trouvé les résultats d'OCR plutôt bons. Le bon côté de ce logiciel est qu’il peut afficher les informations de position du texte OCR au format hOCR , de sorte qu’il soit possible de remettre le texte à la position correcte dans un calque masqué. d'un fichier PDF. De cette façon, vous pouvez créer des fichiers PDF "interrogeables" à partir desquels vous pouvez copier du texte.

J'ai utilisé hocr2pdf pour recréer des PDF à partir des PDF d'origine avec images uniquement et des résultats OCR. Malheureusement, le programme ne semble pas prendre en charge la création de fichiers PDF de plusieurs pages. Vous devrez donc peut-être créer un script pour les gérer:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a new pdf with the
# extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs.
# Usage: ./dwim.sh input.pdf output.pdf

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"

# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
    base="${page%.tiff}"
    cuneiform -f hocr -o "$base.html" "$page"
    hocr2pdf -i "$page" -o "$base.pdf" < "$base.html"
done

# combine the pages into one PDF
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf

rm -rf -- "$tmpdir"

Veuillez noter que le script ci-dessus est très rudimentaire. Par exemple, il ne conserve aucune métadonnée PDF.

25
Jukka Matilainen

Voir si pdftotext travaillera pour vous. Si ce n'est pas sur votre ordinateur, vous devrez installer le paquet poppler-utils

Sudo apt-get install poppler-utils 

Vous pouvez également trouver le pdf toolkit utile.

Une liste complète des logiciels pdf ici sur wikipedia.

Modifier: Etant donné que vous avez besoin de capacités de reconnaissance optique de caractères , je pense que vous devrez essayer une tactique différente. (c'est-à-dire que je ne pouvais pas trouver un convertisseur linux pdf2text faisant de la ROC).

  • Convertir le pdf en image
  • Numérisez l'image en texte à l'aide des outils de ROC

Convertit le pdf en image

  • gs: La commande ci-dessous devrait convertir un fichier PDF multipage en fichiers tiff individuels.

    gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = lettre -sOutputFile = nom_fichier% 04d.tif -dNOPAUSE -dBATCH - nomfichier

  • Utilitaires ImageMagik : Il existe d'autres questions sur le site SuperUser sur l'utilisation d'ImageMagik pour vous aider à effectuer la conversion.

    convertir foo.pdf foo.png

Convertit une image en texte avec OCR

Tiré de la liste de Wikipedia du logiciel OCR

13
nagul

Google docs utilisera maintenant l’OCR pour convertir vos documents PDF/images importés. écrire un SMS. J'ai eu un bon succès avec elle.

Ils utilisent le système OCR utilisé pour le gigantesque projet Google Books .

Toutefois, il convient de noter que seuls les fichiers PDF d’une taille de 2 Mo seront acceptés pour le traitement.

Mettre à jour
1. Pour l'essayer, téléchargez un fichier PDF de moins de 2 Mo dans Google Docs à partir d'un navigateur Web.
2. Faites un clic droit sur le document téléchargé et cliquez sur "Ouvrir avec Google Documents".
... Google Documents convertit le texte en texte et le convertit dans un nouveau fichier portant le même nom, mais Google Docs entre dans le même dossier.

11
Russ

Geza Kovacs a créé un paquet Ubuntu qui est essentiellement un script utilisant hocr2pdf comme suggéré par Jukka, mais qui accélère un peu la configuration.

Extrait du forum de Geza Ubuntu avec des détails sur le paquet ...

Ajout du référentiel et installation sous Ubuntu

Sudo add-apt-repository ppa:gezakovacs/pdfocr
Sudo apt-get update
Sudo apt-get install pdfocr

Exécution d'ocr sur un fichier

pdfocr -i input.pdf -o output.pdf

Dépôt GitHub pour le code https://github.com/gkovacs/pdfocr/

2
ryanjdillon

PDFBeads fonctionne bien pour moi. Ce fil " Convertir les images numérisées en un seul fichier PDF Fichier " m'a permis de démarrer. Pour numériser un livre noir et blanc, vous devez:

  1. Créez une image pour chaque page du PDF; l'un des exemples ci-dessus devrait fonctionner
  2. Génère une sortie hOCR pour chaque page; J'ai utilisé tesseract (mais notez que cunéiforme semble mieux fonctionner).
  3. Déplacez les images et les fichiers hOCR dans un nouveau dossier. les noms de fichiers doivent correspondre, donc fichier001.tif a besoin de fichier001.html, fichier002.tif fichier002.html, etc.
  4. Dans le nouveau dossier, exécutez

    pdfbeads * > ../Output.pdf
    

Cela mettra le PDF assemblé, traité par OCR dans le répertoire parent.

1
scruss

un autre script utilisant tesseract:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"

# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
    base="${page%.tiff}"
    tesseract "$base.tiff" $base
done

# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output

rm -rf -- "$tmpdir"
1
tolima

Le meilleur et le plus simple moyen d’utiliser pypdfocr ne change pas le pdf

pypdfocr your_document.pdf

A la fin, vous aurez un autre your_document_ocr.pdf comme vous le souhaitez avec du texte interrogeable. L'application ne change pas la qualité de l'image. Augmente un peu la taille du fichier en ajoutant le texte de surimpression.

Mise à jour du 3 novembre 2018:

pypdfocr n'est plus pris en charge depuis 2016 et j'ai remarqué quelques problèmes dus au fait que je n'étais pas mentalisée. ocrmypdf ( module ) effectue un travail symiliaire et peut être utilisé comme ceci:

ocrmypdf in.pdf out.pdf

À installer:

pip install ocrmypdf

ou

apt install ocrmypdf
1
Eduard Florinescu

Asprise OCR Library fonctionne sur la plupart des versions de Linux. Il peut prendre PDF une entrée et une sortie au format PDF de recherche.

C'est un paquet commercial. Téléchargez une copie gratuite de Asprise OCR SDK pour Linux ici et exécutez-la comme suit:

aocr.sh input.pdf pdf

Remarque: le "pdf" autonome spécifie le format de sortie.

Déni de responsabilité: Je suis un employé de la société produisant le produit ci-dessus.

1
Asprise Support

Essayez Apache PDFBox d’extraire le contenu textuel de PDF Fichier. Dans le cas d'images incorporées dans PDF fichiers, utilisez l'interface de ligne de commande ABBYY FineReader Engine pour Linux pour extraire le texte.

0
Praveen Kumar K R