Rendre la recherche PDF existante (OCR) via la ligne de commande / script

21

Je recherche un outil scriptable hors ligne qui permet de rechercher un fichier PDF existant en exécutant l'OCR sur celui-ci, en remplaçant le fichier d'origine non consultable par la version consultable, et peut fonctionner sans surveillance.

Par exemple, www.pdfscannerapp.com - fait exactement ce dont j'ai besoin, mais c'est uniquement une interface graphique - pas scriptable.

Je sais qu'Evernote rend les fichiers PDF consultables, mais ils ne peuvent être recherchés que lorsqu'ils sont dans Evernote.

Je ne recherche pas une OCR parfaite, même une OCR modérément acceptable convient, mais je préférerais un petit utilitaire plutôt qu'un gros logiciel.

(Je connais une question similaire, mais différente sur AD: à la recherche de logiciels à numériser ou à convertir en PDF consultable et signable - cependant, je n'ai pas besoin de signer ou de remplir des PDF, et mon exigence est que la solution soit scriptable)

ÉDITER:

1) Plusieurs utilitaires permettent l'extraction de texte structuré, mais pour être extrait, le texte doit être là; Je me réfère principalement aux PDF qui sont des bitmaps enveloppés, comme c'est le cas avec les PDF simples générés par les scanners.

2) Je ne recherche pas nécessairement une solution gratuite, et je serais plus qu'heureux de payer pour un bon utilitaire qui fait exactement ce dont j'ai besoin, mais je ne cherche pas des applications volumineuses avec un million de fonctionnalités qui incluent une fonction OCR mais dont le coût ne justifie pas de les acheter uniquement pour la fonctionnalité OCR.

3) Comme indiqué ci-dessus, je ne recherche pas une OCR parfaite, juste une OCR modérément acceptable. Malheureusement, d'après mon expérience, tesseract est vraiment en dessous de ce seuil. Je définis «modérément acceptable» un OCR qui peut, par exemple, OCR une facture de services publics afin qu'au moins le numéro de compte (numéro de client) soit reconnu correctement.

EDIT: "scriptable" ou "automatisable", c'est-à-dire pouvant être déclenché automatiquement et exécuté sans surveillance sans aucune intervention humaine.

magma
la source
2
... ne savent pas comment il serait difficile de le faire , mais Tesseract OCR souvent mentionné code.google.com/p/tesseract-ocr et OCR Unix.SE .
hhh
1
Il y a une question similaire ici , la réponse correspond-elle à vos besoins?
nohillside
1
Vous mentionnez l'OCR. Vos besoins incluent-ils la manipulation d'images au sein de PDF ou de fichiers PDF numérisés? Pour les fichiers contenant du texte en tant que simple post-scriptum, alors un convertisseur PDF en texte comme "PDF2Text Pilot" peut fonctionner pour vous.
Tim B
@patrix Je cherchais un utilitaire plus petit, pas forcément gratuit mais dans une gamme de prix différente. C'est quand même une solution possible, merci.
magma
@ TimothyButler, malheureusement, j'ai affaire à des PDF numérisés (images). Mais, joli indice, merci.
magma

Réponses:

5

Pour moi, ce n'est pas tout à fait clair quelles sont vos exigences pour pouvoir "script" cela à partir de la "ligne de commande".

Si vous parlez d'automatisation, cela est possible avec n'importe quel nombre d'utilitaires.

ABBYY FineReader Express + Clavier Maestro + Hazel

J'utilise ABBYY FineReader Express + Keyboard Maestro + Hazel comme ceci:

  1. Hazel surveille un dossier donné pour tout nouveau PDF

  2. si un PDF est trouvé, il est ouvert dans "ABBYY FineReader Express"

  3. Keyboard Maestro automatise ensuite le processus de transformation du PDF en PDF interrogeable (OCR) et enregistre le fichier dans un répertoire différent.

Maintenant, si vous ne possédez pas déjà Hazel et Keyboard Maestro, vos coûts initiaux vont augmenter assez rapidement (même si je dépend tellement des deux que je les considère comme une bonne affaire).

Actions PDFPen + AppleScript + Dossier

Vous pouvez faire quelque chose de similaire avec PDFPen (ou PDFPenPro) et les actions de dossier et AppleScript. Voir https://gist.github.com/prenagha/1355037 pour un exemple.

Marco Arment a effectué une enquête sur les applications d'OCR pour Mac et a constaté que PDFPen avait d'excellents résultats et était facile à automatiser.

Une recherche google pour "PDFpen applescript OCR" permettra de trouver un certain nombre d'alternatives.

TJ Luoma
la source
bonne réponse TJ. Hazel est incroyable, je le possède et j'aime l'utiliser énormément. Je ne possède pas actuellement d'abbyy / clavier maestro, mais Hazel + PDFPen est un combo incroyable. Dans l'ensemble, bien que toutes les réponses ici soient généralement très bonnes et s'adressent à des publics légèrement différents, je pense que Hazel + PDFPen convient bien au problème d'origine. Accepté.
magma
+1 sur ABBYYFineReader Express, facilement le meilleur OCR disponible actuellement et j'ai vécu près d'une douzaine de projets personnels
TechZen
12

Ce que vous voulez, c'est Tesseract OCR. Il s'agit d'un OCR open source géré par Google et prenant en charge une variété de plates-formes. Il possède également une interface de ligne de commande native. C'est exactement ce que vous recherchez et disponible à partir du projet de ports Mac ainsi que de homebrew .

Accueil du projet: https://github.com/tesseract-ocr

Comment installer sur OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Exemple d'utilisation: tesseract -l eng input.pdf output

Daniel Kocevski
la source
Beau projet. Dans mes tests, la reconnaissance était médiocre, mais je suis sûr que cela dépend de mon incapacité à l'affiner. Je cherchais une solution plus paresseuse, mais cela pourrait être un bon choix, surtout si vous voulez plus de contrôle et que vous pouvez y consacrer du temps.
magma
tesseract n'est pas très bon par rapport aux applications propriétaires plus récentes. En particulier, il a des problèmes d'encodage et de mathématiques, produisant souvent de nombreux caractères grecs.
TechZen
La version OS X autorise-t-elle les entrées PDF? La version Windows ne fonctionne pas.
Doug
8

Avertissement: PAS UNE SOLUTION OCR (mais cette réponse est toujours utile pour extraire le texte du pdf)

Il existe un projet Apache Software Foundation appelé Apache Tika :

Une boîte à outils détecte et extrait les métadonnées et le contenu textuel structuré de divers documents à l'aide des bibliothèques d'analyseurs existantes

Ils prennent en charge l'extraction de texte PDF à l'aide de PDFBox :

permet la création de nouveaux documents PDF, la manipulation de documents existants et la possibilité d'extraire du contenu à partir de documents. Apache PDFBox comprend également plusieurs utilitaires de ligne de commande

Et ils ont récemment ajouté le support de l' OCR (via Tesserac)

Pour une solution basée sur du texte, PDFBox rend très simple l'extraction de texte à partir d'un PDF:

Il a également d'autres options intéressantes que vous pouvez voir dans les documents ExtractText .

brutuscat
la source
Certainement une bonne option pour extraire du texte, mais je ne vois aucune capacité d'OCR.
magma
1
@magma OCR signifie "reconnaissance optique de caractères", il y a définitivement "capacité OCR". Maintenant, vous devez clarifier: votre problème est-il d'extraire du texte à partir d'une image de mauvaise résolution telle que celle générée avec une caméra VGA, un mauvais scanner ou une image distante? Ensuite, votre problème est différent et nécessite une considération physique de choses telles que la super-résolution. Veuillez poser des questions plus précises et plus courtes afin d'y répondre. Je vous suggère de simplifier cette question à une fonctionnalité que vous souhaitez. Si vous voulez quelque chose de plus, posez une nouvelle question.
hhh
3
@hhh, une chose consiste à extraire du texte d'un fichier binaire (tel qu'un PDF) afin qu'il soit utilisable et lisible, en analysant le format binaire. il n'y a rien d'optique là-dedans. le texte est déjà là, ces utilitaires ne font que l'extraire pour qu'il soit facile à vos yeux, pour ainsi dire. La reconnaissance optique des caractères est différente en ce qu'elle essaie de reconnaître les motifs de pixels dans une image bitmap et de les comprendre suffisamment pour produire un fragment de texte correspondant.
magma
Cela ne répond pas à la question d'origine. AFAICT, pdfbox-app ne fait pas d'OCR.
Feuermurmel
5

Je recommanderais DEVONThink Pro Office . C'est une excellente application et a un très bon support AppleScript. Hélas, seule la version 'Pro Office' a la capacité OCR - vous devrez donc débourser 100 £ (150 $).

Ce serait exagéré si vous ne l'utilisez que pour l'OCR scripté - mais c'est une très bonne application.

[modifier] - ah relisez votre message - ce serait certainement exagéré!

Si vous voulez simplement l'OCR à partir du shell, vous pouvez essayer de parler à ABBY dont le moteur DEVON est sous licence:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr

Diggory
la source
Bien que le DEVONThink Pro Office sous OS X soit une exagération, il est intéressant. Si les développeurs l'ont conçu sur OS X et iOS, cela pourrait bien fonctionner (en gardant l'interface utilisateur plus simple) - savez-vous quelque chose comme ça? Idée sympa cependant - donc la version Pro ajoute automatiquement la couche OCR à toutes sortes de choses telles que les captures d'écran et les PDF? Et l'utilisateur peut en quelque sorte le "script"?
hhh
2
Oui - l'application possède un bon dictionnaire AppleScript, qui, entre autres, vous permet de convertir des images stockées dans l'application en fichiers PDF consultables.
Diggory
Supposons que je prenne des photos avec l'iPhone ou des captures d'écran avec OS X et les mette dans un dossier ProjectA, DEVONThink leur ajoute-t-il automatiquement la couche OCR même sans spécifier la langue? Supposons que vous les mettiez dans une DropBox et que vous fassiez ensuite DEVONThink dans OSX pour vérifier le dossier automatiquement, vous pourriez alors travailler avec OS X et iOS? C'est un concept fascinant s'il est bien fait ... +1
hhh
D'une certaine manière, cela ressemble à EverNote où EverNote ajoute l'OCR mais ne permet pas son exportation comme ça. Est-il possible d'exporter vos projets depuis ce logiciel avec l'OCR? Sinon, une bibliothèque OCR très simple, puis une bibliothèque d'analyse linguistique peut fonctionner le mieux. Peut-être que l'autre est ABBY, je ne sais pas encore.
hhh
2
Il peut reconnaître en plusieurs langues: i.stack.imgur.com/buDLI.png
Diggory
5

Vous pouvez rendre votre PDF existant consultable en le convertissant en fichier texte. Vous avez besoin d'au moins Imagemagick , Ghostscript (pour la conversion PDF) et l' outil OCR Tesseract .

Quelques exemples de ligne de commande:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Cela peut être étendu à vos besoins.

Pour installer les outils requis, sur OSX vous pouvez l'installer via Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

Sous Linux, utilisez apt-getou à la yumplace de brew.

Pour plus d'outils OCR, consultez: OCR sur les systèmes Linux

En relation:

kenorb
la source
4

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
Cela ressemble à une solution intéressante, même si j'ai trouvé le backend OCR, Tesseract, plutôt décevant (certainement en raison de mes propres limites à le configurer correctement).
magma
J'adore OCRmyPDF, voir ma réponse ci-dessous qui explique comment l'installer et le glisser-déposer automatise rapidement et sans douleur avec docker.
Thadk
1

Stackoverflow a des questions connexes sous analyse PDF couvrant des choses telles que PDFBox et TIKA d'Apache que la PDFBox utilise. Le code ruby ​​ci-dessous extrait l'écriture du PDF. Vous devez avoir une résolution suffisamment bonne pour que ce type de codes fonctionne correctement. Obtenez donc un scanner suffisamment bon avec une grande résolution et voyez si certains logiciels fonctionnent.

Exemples

  1. https://github.com/yob/pdf-reader/tree/master/examples

Fils SO

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Éditer]

Je ne sais pas si j'ai compris votre problème maintenant. Vous souhaitez ajouter une couche OCR à différents types de documents tels que des photos aléatoires, des captures d'écran, des PDF sans couche OCR, etc.? Je ne connais pas la solution mais je suis sûr que quelqu'un sait donc posé une question spécifique comment le faire avec Automator et certains logiciels OCR:

Automator-script avec un logiciel OCR pour ajouter automatiquement l'OCR au matériel?

hhh
la source
Encore une fois: je ne cherche pas à analyser ou à extraire du texte qui existe déjà. Je cherche à reconnaître du texte (OCR) dans un fichier PDF qui sont essentiellement des images, des bitmaps; ils ne contiennent à l'origine aucun texte.
magma
@magma s'il vous plaît, consultez ma mise à jour. Vous souhaitez automatiser l'ajout de la couche OCR afin de pouvoir rechercher parmi différents types de documents même sans "texte interrogeable"? Si vous pouviez le faire, vous pourriez rechercher tous les documents dans le Finder - vous comprenez? Je suis surpris si Apple ne le fait pas dans les prochaines mises à jour ...
hhh
comme indiqué dans ma question, oui.
magma
1

Pour ce type d'application autogérée, je suis un grand fan de Hazel.

Il est extrêmement facile de scripter des actions sans avoir besoin d'apprendre un outil plus orienté ligne de commande comme perl ou python et couplé avec le moteur OCR de votre choix (le mien est actuellement PDF Pen Pro), vous ne devriez avoir aucun problème à traiter vos fichiers avec un minimum agitation.

Les deux sont des logiciels payants, mais l'utilité des deux s'étend bien au-delà de ce cas. Dans ma situation, avec le travail impliqué dans la numérisation de mes anciens enregistrements numérisés (et du papier en cours), le prix de ceux-ci dépasse de loin le temps que j'aurais passé à programmer cela ailleurs et maintenant que je possède les deux outils, je peux effectuer de nombreuses autres tâches avec leur.

bmike
la source
0

PDFScannerApp a un support de script non officiel. Contactez l'auteur pour l'action Automator.

ndf
la source
0

J'utilise Adobe acrobat pour l'OCR en lot. Mon scanner recto verso peut l'OCR après la numérisation, mais la technologie OCR dans acrobat est plus précise à mon avis. Je pointe simplement vers ce dossier qui n'a pas d'OCR, puis acrobat enregistre le PDF en tant que PDF consultable comprenant maintenant une couche de texte. Si je voulais l'OCR via la ligne de commande, je ne connais pas de moyen mais je peux automatiser la fin de l'interface graphique en utilisant Autohotkey. Pas aussi fiable ni rapide que la ligne de commande, mais il fait le travail après avoir configuré une action de flux de travail pour minimiser l'interaction GUI.

Pour Mac, le script Apple fait ce que fait Autohotkey sur le PC même si je n'ai pas encore essayé sur mon Mac.

La touche de raccourci automatique est livrée avec un enregistreur, donc la plupart de l'écriture de script est un dîner pour vous avec un peu plus petit d'édition pour le raffinement et peut-être une boucle si vous le souhaitez.

J'ai expérimenté des images OCRing, mais je n'ai pas encore entièrement automatisé le processus via acrobat. La ligne de commande est idéale mais je n'ai pas trouvé de moteur OCR de qualité qui dépasse acrobat, donc je reste avec acrobat pour l'instant.

Soleil
la source
0

Je suis tombé dessus récemment: http://ocrkit.com/faq.html

Vous devez cependant payer après 14 jours

Charlton
la source
1
Bienvenue sur Ask Different! Nous essayons de trouver les meilleures réponses et ces réponses fourniront des informations sur les raisons pour lesquelles elles sont les meilleures. Expliquez pourquoi vous pensez que le logiciel que vous avez recommandé est meilleur que les autres. En général, les réponses contenant uniquement des liens sont susceptibles d'être supprimées, vous devez donc toujours inclure toutes les informations pertinentes dans votre réponse. Voir Comment répondre sur la façon de fournir une réponse de qualité.
fsb
0

J'ai obtenu une conversion Drag & Drop de haute qualité en utilisant Docker.

Si vous:

  1. installez Docker pour votre Mac et
  2. puis créez une nouvelle application Automator
  3. avec ces contenus à l'intérieur d'une action "Exécuter un script Shell". Choisissez Pass Input:"as arguments"

/bin/bash texte du script:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Vous devriez alors être bon de glisser-déposer des PDF dessus et vous obtiendrez un PDF de même nom avec "-ocr" ajouté au nom du fichier.

J'imagine qu'il pourrait être facilement modifié pour renvoyer un fichier à Automator pour le copier quelque part également. Plus de détails sur le package de docker OCRmyPDF. et outil principal (également mentionné dans une réponse différente).

Vous pouvez le tester dans Automator lui-même avec l'action "Obtenir les éléments du Finder spécifiés" en entrée.

La première fois qu'il s'exécute, cela prend plus de temps car il devra télécharger les images Docker pour OCRmyPDF (de manière invisible). Dans Terminal, vous pouvez également exécuter docker pull jbarlow83/ocrmypdfpour accélérer la première exécution. Une exécution typique prend environ 10 secondes par page PPP élevée, mais a automatiquement des résultats de conversion de texte en texte même s'il existe des tableaux ou des diagrammes. Avant d'OCRing, je recadre en utilisant Sejda afin que les mots de marge absurdes des autres pages soient supprimés.

L' --force-ocrargument indique à l'outil d'ignorer et d'écraser toutes les tentatives d'OCR antérieures, qui dans mes cas ne sont généralement que partielles et inutiles.

thadk
la source
0

OCRKit prend en charge AppleScript et une CLI. Depuis leur page d'aide :

AppleScript

Vous pouvez également créer un script OCRKit pour l'intégrer à votre flux de travail spécifique. Par exemple, traitez les fichiers entrants, via le dossier partagé, à partir de la machine de copie MFP, etc. et dites simplement à OCRKit de s'ouvrir et donc de traiter via AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Ligne de commande

Depuis OCRKit version 2.5, les scripts de ligne de commande directe sont pris en charge. Cela simplifie considérablement l'utilisation d'OCRKit dans le traitement par lots, permet de définir plus d'options et est également plus robuste et multiplateforme qu'AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Depuis OCRKit version 16.9, des options de ligne de commande supplémentaires sont prises en charge:

-r, --recursive directory

Analyser récursivement le répertoire pour les nouveaux fichiers. Ignore les fichiers d'OCRKit, avec une couche de texte ou des graphiques vectoriels.

--pattern "regex"

Modèle utilisé pour faire correspondre les noms de fichiers lors des analyses récursives. Par défaut %.pdf$, la recommandation pour TIFF est%.tiff?$

--log file

Écrivez les informations et les statistiques du fichier journal pendant l'analyse récursive dans le fichier.

--password secret

Utilisez un mot de passe secret pour décrypter les fichiers PDF pendant le traitement par lots.

--test-run [ fast ]

Exécutez uniquement le traitement par lots de test en mode test pour tester les fichiers PDF ou pour obtenir le nombre de pages afin d'estimer le temps de traitement total. "rapide" ne vérifiera que la première page de chaque fichier, au lieu de parcourir toutes les pages pour l'analyse d'images et de vecteurs.

--tag name

Utilisez le nom d'attribut étendu pour baliser l'état de traitement des fichiers pendant le traitement par lots. macos:OCRKit (%s)utilisera à la place des balises natives du Finder macOS, ou tout simplement macos:OCRKitsans inclure l'attribut state. L'ordre de l'attribut de l' Etat sont: started, analyzed, processedet peut aussi être encrypted.

xilopaint
la source