Comment faire l'OCR à partir de la ligne de commande Linux à l'aide de Tesseract
Vous pouvez extraire du texte d'images sur la ligne de commande Linux à l'aide du moteur Tesseract OCR. Il est rapide, précis et fonctionne dans environ 100 langues. Voici comment l'utiliser.
Sommaire
Reconnaissance optique de caractères
La reconnaissance optique de caractères (OCR) est la capacité de regarder et de trouver des mots dans une image, puis de les extraire sous forme de texte modifiable. Cette tâche simple pour les humains est très difficile pour les ordinateurs. Les premiers efforts ont été maladroits, c'est le moins qu'on puisse dire. Les ordinateurs étaient souvent confus si la police ou la taille ne convenait pas au logiciel OCR.
Néanmoins, les pionniers dans ce domaine étaient toujours tenus en haute estime. Si vous perdez la copie électronique d'un document, mais que vous avez toujours une version imprimée, l'OCR peut recréer une version électronique modifiable. Même si les résultats n'étaient pas précis à 100%, cela représentait tout de même un gain de temps considérable.
Avec un peu de rangement manuel, vous récupérerez votre document. Les gens pardonnaient les erreurs commises car ils comprenaient la complexité de la tâche à accomplir pour un progiciel OCR. De plus, c'était mieux que de retaper tout le document.
Les choses se sont considérablement améliorées depuis. L'application Tesseract OCR, écrite par Hewlett Packard, a débuté dans les années 1980 en tant qu'application commerciale. Il a été open-source en 2005 et est désormais pris en charge par Google. Il a des capacités multilingues, est considéré comme l'un des systèmes OCR les plus précis disponibles et vous pouvez l'utiliser gratuitement.
Installation de Tesseract OCR
Pour installer Tesseract OCR sur Ubuntu, utilisez cette commande:
sudo apt-get install tesseract-ocr
Sur Fedora, la commande est:
sudo dnf install tesseract
Sur Manjaro, vous devez taper:
sudo pacman -Syu tesseract
Utilisation de Tesseract OCR
Nous allons poser une série de défis à Tesseract OCR. Notre première image contenant du texte est un extrait du considérant 63 du règlement général sur la protection des données. Voyons si OCR peut lire ceci (et rester éveillé).
C'est une image délicate car chaque phrase commence par un faible nombre en exposant, ce qui est typique des documents législatifs.
Nous devons donner le tesseract
commander certaines informations, notamment:
- Le nom du fichier image que nous voulons qu'il traite.
- Le nom du fichier texte qu'il créera pour contenir le texte extrait. Nous n'avons pas besoin de fournir l'extension de fichier (ce sera toujours .txt). Si un fichier existe déjà avec le même nom, il sera écrasé.
- Nous pouvons utiliser le
--dpi
option pour diretesseract
quelle est la résolution en points par pouce (dpi) de l'image. Si nous ne fournissons pas de valeur en dpi,tesseract
essaiera de le comprendre.
Notre fichier image s'appelle «recital-63.png» et sa résolution est de 150 dpi. Nous allons créer un fichier texte à partir de celui-ci appelé "recital.txt".
Notre commande ressemble à ceci:
tesseract recital-63.png recital --dpi 150
Les résultats sont très bons. Le seul problème, ce sont les exposants: ils étaient trop faibles pour être lus correctement. Une image de bonne qualité est essentielle pour obtenir de bons résultats.
tesseract
a interprété les nombres en exposant comme des guillemets («) et des symboles de degré (°), mais le texte réel a été parfaitement extrait (le côté droit de l'image a dû être rogné pour tenir ici).
Le dernier caractère est un octet avec la valeur hexadécimale de 0x0C, qui est un retour chariot.
Vous trouverez ci-dessous une autre image avec du texte de différentes tailles, en gras et en italique.
Le nom de ce fichier est «bold-italic.png». Nous voulons créer un fichier texte appelé «bold.txt», donc notre commande est:
tesseract bold-italic.png bold --dpi 150
Celui-ci ne posait aucun problème, et le texte était parfaitement extrait.
Utilisation de différentes langues
Tesseract OCR prend en charge environ 100 langues. Pour utiliser une langue, vous devez d'abord l'installer. Lorsque vous trouvez la langue que vous souhaitez utiliser dans la liste, notez son abréviation. Nous allons installer la prise en charge du gallois. Son abréviation est «cym», qui est l'abréviation de «Cymru», qui signifie gallois.
Le package d'installation est appelé «tesseract-ocr-» avec l'abréviation de la langue à la fin. Pour installer le fichier de langue gallois dans Ubuntu, nous utiliserons:
sudo apt-get install tesseract-ocr-cym
L'image avec le texte est ci-dessous. C’est le premier couplet de l’hymne national gallois.
Voyons si Tesseract OCR est à la hauteur du défi. Nous utiliserons le -l
(langue) option à louer tesseract
connaître la langue dans laquelle nous voulons travailler:
tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150
tesseract
s'adapte parfaitement, comme indiqué dans le texte extrait ci-dessous. Da iawn, Tesseract OCR.
Si votre document contient deux ou plusieurs langues (comme un dictionnaire gallois-anglais, par exemple), vous pouvez utiliser un signe plus (+
) dire tesseract
pour ajouter une autre langue, comme ceci:
tesseract image.png textfile -l eng+cym+fra
Utilisation de Tesseract OCR avec des PDF
le tesseract
La commande est conçue pour fonctionner avec des fichiers image, mais elle ne peut pas lire les PDF. Toutefois, si vous devez extraire du texte d'un PDF, vous pouvez d'abord utiliser un autre utilitaire pour générer un ensemble d'images. Une seule image représentera une seule page du PDF.
le pdftppm
L'utilitaire dont vous avez besoin doit déjà être installé sur votre ordinateur Linux. Le PDF que nous utiliserons pour notre exemple est une copie de l'article fondateur d'Alan Turing sur l'intelligence artificielle, «Computing Machinery and Intelligence».
Nous utilisons le -png
option pour spécifier que nous voulons créer des fichiers PNG. Le nom de fichier de notre PDF est «turing.pdf». Nous appellerons nos fichiers image «turing-01.png», «turing-02.png», etc.:
pdftoppm -png turing.pdf turing
Courir tesseract
sur chaque fichier image en utilisant une seule commande, nous devons utiliser une boucle for. Pour chacun de nos «turing-nn.png, "fichiers que nous exécutons tesseract
, et créez un fichier texte appelé «text-» plus «turing-nn"Dans le cadre du nom du fichier image:
for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;
Pour combiner tous les fichiers texte en un seul, nous pouvons utiliser cat
:
cat text-turing* > complete.txt
Alors, comment ça s'est passé? Très bien, comme vous pouvez le voir ci-dessous. La première page semble cependant assez difficile. Il a différents styles et tailles de texte, ainsi qu'une décoration. Il y a également un "filigrane" vertical sur le bord droit de la page.
Cependant, la sortie est proche de l'original. Évidemment, le formatage a été perdu, mais le texte est correct.
Le filigrane vertical a été transcrit comme une ligne de charabia en bas de page. Le texte était trop petit pour être lu par tesseract
avec précision, mais il serait assez facile de le trouver et de le supprimer. Le pire résultat aurait été des caractères errants à la fin de chaque ligne.
Curieusement, les lettres uniques au début de la liste des questions et réponses de la page deux ont été ignorées. La section du PDF est illustrée ci-dessous.
Comme vous pouvez le voir ci-dessous, les questions demeurent, mais les «Q» et «A» au début de chaque ligne ont été perdus.
Les diagrammes ne seront pas non plus transcrits correctement. Voyons ce qui se passe lorsque nous essayons d'extraire celui ci-dessous du PDF de Turing.
Comme vous pouvez le voir dans notre résultat ci-dessous, les caractères ont été lus, mais le format du diagramme a été perdu.
Encore, tesseract
lutté avec la petite taille des indices, et ils ont été rendus incorrectement.
En toute honnêteté, cependant, c'était toujours un bon résultat. Nous n’avons pas été en mesure d’extraire un texte simple, mais cet exemple a été délibérément choisi car il représentait un défi.
Une bonne solution quand vous en avez besoin
L’OCR n’est pas quelque chose dont vous aurez besoin quotidiennement. Cependant, lorsque le besoin se fait sentir, il est bon de savoir que vous disposez de l’un des meilleurs moteurs OCR.