vendredi 31 juillet 2020

Comment faire l'OCR à partir de la ligne de commande Linux à l'aide de Tesseract

Fatmawati Achmad Zaenuri / Shutterstock

Vous pouvez extraire du texte des 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.

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 à faire 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 n'était pas du goût du 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 un gain de temps considérable.

Avec un peu de rangement manuel, vous récupéreriez 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 

 sudo apt installer tesseract -ocr dans une fenêtre de terminal.

Sur Fedora, la commande est:

 sudo dnf install tesseract 

 sudo dnf installer tesseract dans une fenêtre de terminal.

Sur Manjaro, vous devez taper:

 sudo pacman -Syu tesseract 

 sudo pacman -Syu tesseract dans une fenêtre de terminal.

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 l'OCR peut lire ceci (et rester éveillé).

extrait du considérant 63 du RGPD

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 à la commande tesseract des 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 à fournir l'extension de fichier (ce sera toujours .txt). Si un fichier existe déjà avec le même nom, il sera écrasé.
  • Nous peut utiliser l'option --dpi pour indiquer à tesseract quelle est la résolution points par pouce (dpi) de l'image. Si nous ne fournissez 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 

tesseract recital-63.png recital --dpi 150 dans une fenêtre de terminal.

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 vitale pour obtenir de bons résultats.

Extra interprété le texte du considérant 63.

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 le côté droit de l'image a dû être rogné pour tenir ici).

Le caractère final est un octet avec la valeur hexadécimale de 0x0C, qui est un retour chariot.

Voici un autre image avec du texte de différentes tailles, en gras et en italique.

Image avec différentes tailles de texte 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 

tesseract bold -italic.png bold --dpi 150 dans une fenêtre de terminal.

Celui-ci n'a posé aucun problème, et le texte a été parfaitement extrait.

extrait le texte de bold-italic.png.

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 le support pour Welsh. Son abréviation est «cym», qui est l'abréviation de «Cymru», qui signifie gallois.

Le paquet d'installation s'appelle «tesseract-ocr-» avec l'abréviation de langue à la fin. Pour installer le fichier de langue gallois dans Ubuntu, nous utiliserons:

 sudo apt-get install tesseract-ocr-cym 

 sudo apt-get install tesseract-ocr-cym dans une fenêtre de terminal.

L'image avec le texte est au dessous de. C'est le premier couplet de l'hymne national gallois.

 image contenant le texte du premier couplet de l'hymne national gallois.

Voyons si Tesseract OCR iest à la hauteur du défi. Nous utiliserons l'option -l (language) pour indiquer à tesseract la langue dans laquelle nous voulons travailler:

 tesseract hen-wlad- fy-nhadau.png anthem -l cym --dpi 150 

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150 dans une fenêtre de terminal.

tesseract s'en sort parfaitement, comme indiqué dans l'extrait texte ci-dessous. Da iawn , Tesseract OCR.

Texte gallois extrait.

Si votre document contient deux ou plusieurs langues (comme un dictionnaire gallois-anglais, par exemple), vous pouvez utiliser un plsignez ( + ) pour dire à tesseract d'ajouter une autre langue, comme ceci:

 tesseract image.png textfile -l eng + cym + fra 

Utilisation de Tesseract OCR avec des PDF

La commande tesseract 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.

L'utilitaire pdftppm dont vous avez besoin devrait 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».

 PDF de la page de titre de

Nous utilisons le -png 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 

pdftoppm -png turing.pdf turing dans une fenêtre de terminal.

Pour exécuter tesseract sur chaque fichier image à l'aide d'une seule commande, nous devons utiliser une pour la boucle . Pour chacun de nos fichiers «turing- nn .png», nous exécutons tesseract et créons un fichier texte appelé «text-» plus «turing- nn ”dans le cadre du nom du fichier image:

 for i in turing - ??. png; faire tesseract  "$ i " "texte- $ i " -l eng; done; 

pour i in turing - ??. png; do tesseract

Pour combiner tous les fichiers texte en un seul, nous pouvons utiliser cat :

 chat text-turing *> complete.txt 

cat text-turing *> complete.txt dans une fenêtre de terminal.

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.

Cependantr, la sortie est proche de l'original. Évidemment, le formatage a été perdu, mais le texte est correct.

Première page de texte extrait du PDF de Turing.

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 simples 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.

A liste de questions et réponses du PDF de l'article de Turing.

Comme vous pouvez voir ci-dessous, les questions restent, mais le «Q» et le «A» au début de chaque ligne ont été perdus.

 Texte extrait de la page de questions et réponses du PDF de Turing.

Les diagrammes ne seront pas non plus transcrits correctement. Regardons ce qui se passe lorsque nous essayons d'extraire celui ci-dessous du PDF de Turing.

Un diagramme de

Comme vous pouvez le voir dans notre résultatci-dessous, les caractères ont été lus, mais le format du diagramme a été perdu.

 Texte extrait d'un diagramme dans le PDF de Turing.

Encore une fois, tesseract a eu du mal avec la petite taille des indices, et ils ont été rendus incorrectement.

En toute honnêteté, cependant, c'était quand même un bon résultat. Nous n'avons pas été en mesure d'extraire du texte simple, mais cet exemple a été délibérément choisi car il présentait un défi.

Une bonne solution quand vous en avez besoin

L'OCR n'est pas quelque chose vous devrez utiliser quotidiennement. Cependant, lorsque le besoin se fait sentir, il est bon de savoir que vous avez l’un des meilleurs moteurs OCR à votre disposition.

Aucun commentaire:

Enregistrer un commentaire