Top 7 bibliothèques Python OCR pour l’extraction de texte à partir d’images

La reconnaissance optique de caractères (OCR) est une technologie qui extrait du texte lisible à partir d’images, de documents numérisés et même de notes manuscrites. En Python, les outils OCR ont considérablement évolué au fil des ans, et avec la dernière version, ces bibliothèques offrent désormais des solutions encore plus puissantes et efficaces.

Cet article présentera les sept meilleures bibliothèques OCR en Python, en mettant en avant leurs forces, leurs fonctionnalités uniques et des exemples de code pour vous aider à démarrer.

1. Tesseract OCR (pytesseract)

Tesseract est sans aucun doute la bibliothèque OCR la plus populaire et la plus largement utilisée dans l’écosystème Python. Développé à l’origine par HP et maintenant maintenu par Google, Tesseract offre des capacités OCR de haute qualité pour plus de 100 langues.

Fonctionnalités clés:

  • Open-source et gratuit.
  • Prend en charge plusieurs langues, y compris des alphabets non latins.
  • Reconnaît le texte dans les images, les documents numérisés et les PDF.
  • Peut être personnalisé avec des données d’entraînement personnalisées pour des cas d’utilisation spécialisés.
  • Fonctionne bien avec des outils de prétraitement comme OpenCV pour améliorer la précision.

Pour installer Tesseract OCR sur Linux, suivez ces étapes en fonction de votre distribution:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Une fois que Tesseract est installé, si vous souhaitez l’utiliser avec Python, vous devez installer le package pytesseract en utilisant le gestionnaire de packages pip.

pip3 install pytesseract
OR
pip install pytesseract

Voici un exemple de code Python pour utiliser Tesseract OCR avec la bibliothèque pytesseract pour extraire du texte à partir d’une image.

import pytesseract
from PIL import Image

# Load an image
img = Image.open("image_sample.png")

# Use Tesseract to extract text
text = pytesseract.image_to_string(img)

# Print the extracted text
print(text)

2. EasyOCR

EasyOCR est une autre excellente bibliothèque Python OCR qui prend en charge plus de 80 langues et est facile à utiliser pour les débutants. Elle est basée sur des techniques d’apprentissage profond, ce qui en fait un excellent choix pour ceux qui veulent tirer parti de la technologie OCR moderne.

Fonctionnalités clés:

  • Haute précision avec des modèles d’apprentissage profond.
  • Prise en charge d’un large éventail de langues.
  • Peut détecter du texte dans des images verticales et multilingues.
  • API simple et facile à comprendre.

Pour installer EasyOCR sur Linux, vous pouvez utiliser la commande pip suivante en fonction de votre distribution.

pip3 install easyocr
OR
pip install easyocr

Une fois l’installation terminée, vous pouvez utiliser EasyOCR pour extraire du texte à partir d’une image.

import easyocr

# Initialize the OCR reader
reader = easyocr.Reader(['en'])

# Extract text from an image
result = reader.readtext('image_sample.png')

# Print the extracted text
for detection in result:
    print(detection[1])

3. OCRopus

OCRopus est un système OCR open-source développé par Google. Bien qu’il soit principalement utilisé pour les documents historiques et les livres, OCRopus peut également être appliqué à une grande variété de tâches d’extraction de texte.

Fonctionnalités clés:

  • Spécialisé dans l’analyse de la mise en page des documents et l’extraction de texte.
  • Conçu avec la modularité à l’esprit, permettant une personnalisation facile.
  • Peut travailler avec des documents multi-pages et de grands ensembles de données.

Voici un exemple de code Python pour extraire du texte à partir d’une image.

import subprocess

# Use OCRopus to process an image
subprocess.run(['ocropus', 'identify', 'image_sample.png'])

4. PyOCR

PyOCR est une surcouche Python autour de plusieurs moteurs OCR, y compris Tesseract et CuneiForm. Il fournit une interface simple pour intégrer la fonctionnalité OCR dans les applications Python.

Fonctionnalités clés:

  • Peut interagir avec plusieurs moteurs OCR.
  • Fournit une API simple pour l’extraction de texte.
  • Peut être combiné avec des bibliothèques de prétraitement d’images pour des résultats améliorés.

PyOCR nécessite Tesseract (moteur OCR) et Pillow (bibliothèque de traitement d’images). Vous pouvez les installer en utilisant les commandes suivantes:

sudo apt install tesseract-ocr     [On Debian, Ubuntu and Mint]
sudo yum install tesseract         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/tesseract  [On Gentoo Linux]
sudo apk add tesseract             [On Alpine Linux]
sudo pacman -S tesseract           [On Arch Linux]
sudo zypper install tesseract      [On OpenSUSE]    
sudo pkg install tesseract         [On FreeBSD]

Maintenant, vous pouvez installer les bibliothèques pyocr et pillow en utilisant pip:

pip3 install pyocr pillow
OR
pip install pyocr pillow

Voici un exemple en Python qui extrait du texte d’une image en utilisant PyOCR et Tesseract:

import pyocr
from PIL import Image

# Choose the OCR tool (Tesseract or CuneiForm)
tool = pyocr.get_available_tools()[0]

# Load the image
img = Image.open('image_sample.png')

# Extract text from the image
text = tool.image_to_string(img)

# Print the extracted text
print(text)

5. PaddleOCR

PaddleOCR est une bibliothèque OCR développée par PaddlePaddle, un framework d’apprentissage profond. Elle prend en charge plus de 80 langues et offre une précision de pointe grâce à l’utilisation de modèles d’apprentissage profond.

Fonctionnalités clés:

  • Hautes performances, notamment pour les images avec des arrière-plans complexes.
  • Prise en charge de la détection de texte, de la reconnaissance et de l’analyse de la mise en page.
  • Comprend des modèles pré-entraînés pour diverses langues.

Pour installer PaddleOCR sur Linux, utilisez:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Voici un exemple en Python qui extrait du texte d’une image en utilisant la bibliothèque paddleocr:

from paddleocr import PaddleOCR

# Initialize the OCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')

# Perform OCR on an image
result = ocr.ocr('image_sample.png', cls=True)

# Print the extracted text
for line in result[0]:
    print(line[1])

6. Kraken

Kraken est une bibliothèque OCR haute performance spécialement conçue pour les textes historiques et multilingues. Elle est construite sur OCRopus et offre des fonctionnalités supplémentaires pour les mises en page complexes et l’extraction de texte.

Fonctionnalités clés:

  • Idéale pour les livres anciens et l’OCR multilingue.
  • Gère les mises en page de texte complexes et les polices historiques.
  • Utilise l’apprentissage automatique pour une meilleure précision de reconnaissance.

Pour installer Kraken sur Linux, utilisez :

pip3 install kraken
OR
pip install kraken

Voici un exemple en Python qui extrait du texte d’une image en utilisant la bibliothèque kraken :

import kraken

# Load the model and recognize text
text = kraken.binarize("image_sample.png")

# Print the recognized text
print(text)

7. Textract (AWS)

AWS Textract est le service de ROC basé sur le cloud d’Amazon qui peut analyser des documents et des formulaires et extraire du texte avec une grande précision. Il s’intègre parfaitement avec d’autres services AWS.

Principales fonctionnalités :

  • ROC basé sur le cloud avec des solutions évolutives.
  • Prise en charge de l’analyse de la structure des documents, y compris les tableaux et les formulaires.
  • Intégration avec les services AWS pour un traitement ultérieur des données.

Pour installer Textract sur Linux, utilisez :

pip3 install boto3
OR
pip install boto3

Voici un exemple de script Python qui utilise AWS Textract pour extraire du texte d’un document (par exemple, un PDF numérisé ou un fichier image).

import boto3

# Initialize a Textract client
client = boto3.client('textract')

# Path to the image or PDF file you want to analyze
file_path = 'path_to_your_file.png'  # Replace with your file path

# Open the file in binary mode
with open(file_path, 'rb') as document:
    # Call Textract to analyze the document
    response = client.detect_document_text(Document={'Bytes': document.read()})

# Print the extracted text
for item in response['Blocks']:
    if item['BlockType'] == 'LINE':
        print(item['Text'])
Conclusion

Le choix de la bonne bibliothèque ROC en Python dépend du cas d’utilisation spécifique, des exigences linguistiques et de la complexité des documents que vous traitez. Que vous travailliez sur des documents historiques, des textes multilingues ou des PDF simples numérisés, ces bibliothèques fournissent des outils puissants pour l’extraction de texte.

Pour les débutants, Tesseract et EasyOCR sont d’excellents points de départ en raison de leur facilité d’utilisation et de leur large adoption. Cependant, pour des tâches plus avancées ou spécialisées, des bibliothèques comme PaddleOCR, OCRopus et Kraken offrent une plus grande flexibilité et précision.

Source:
https://www.tecmint.com/python-text-extraction-from-images/