I migliori 7 librerie Python OCR per l’estrazione di testo dalle immagini

L’Riconoscimento Ottico dei Caratteri (OCR) è una tecnologia che estrae testo leggibile da immagini, documenti scannerizzati e persino note scritte a mano. In Python, gli strumenti OCR si sono evoluti notevolmente nel corso degli anni e con l’ultima versione, queste librerie offrono ora soluzioni ancora più potenti ed efficienti.

Questo articolo coprirà le sette migliori librerie OCR in Python, evidenziando i loro punti di forza, le caratteristiche uniche ed esempi di codice per aiutarti a iniziare.

1. Tesseract OCR (pytesseract)

Tesseract è senza dubbio la librerie OCR più popolare e ampiamente utilizzata nell’ecosistema Python. Originariamente sviluppata da HP e ora mantenuta da Google, Tesseract fornisce capacità di OCR di alta qualità per oltre 100 lingue.

Caratteristiche Principali:

  • Open-source e gratuita da utilizzare.
  • Supporta diverse lingue, incluso alfabeti non latini.
  • Riconosce testo in immagini, documenti scannerizzati e PDF.
  • È possibile personalizzarla con dati di addestramento personalizzati per casi d’uso specializzati.
  • Funziona bene con strumenti di pre-elaborazione come OpenCV per migliorare l’accuratezza.

Per installare Tesseract OCR su Linux, segui questi passaggi a seconda della tua distribuzione:

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]

Una volta installato Tesseract, se desideri utilizzarlo con Python, devi installare il pacchetto pytesseract utilizzando il gestore di pacchetti pip.

pip3 install pytesseract
OR
pip install pytesseract

Ecco un esempio di codice Python per utilizzare Tesseract OCR con la libreria pytesseract per estrarre il testo da un’immagine.

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 è un’altra eccellente libreria Python OCR che supporta più di 80 lingue ed è facile da usare per i principianti. È basata su tecniche di deep learning, rendendola un’ottima scelta per coloro che desiderano sfruttare la tecnologia OCR moderna.

Caratteristiche principali:

  • Alta precisione con modelli di deep learning.
  • Supporta una vasta gamma di lingue.
  • Può rilevare testo in immagini verticali e multilingue.
  • API semplice e facile da comprendere.

Per installare EasyOCR su Linux, puoi utilizzare il seguente comando pip in base alla tua distribuzione.

pip3 install easyocr
OR
pip install easyocr

Una volta completata l’installazione, puoi utilizzare EasyOCR per estrarre testo da un’immagine.

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 è un sistema OCR open source sviluppato da Google. Sebbene sia principalmente utilizzato per documenti storici e libri, OCRopus può essere applicato anche a una vasta gamma di compiti di estrazione del testo.

Caratteristiche principali:

  • Specializzato nell’analisi del layout del documento e nell’estrazione del testo.
  • Realizzato con la modularità in mente, consentendo una facile personalizzazione.
  • Può lavorare con documenti multi-pagina e grandi set di dati.

Ecco un esempio di codice Python per estrarre testo da un’immagine.

import subprocess

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

4. PyOCR

PyOCR è un wrapper Python attorno a diversi motori OCR, tra cui Tesseract e CuneiForm. Fornisce un’interfaccia semplice per integrare la funzionalità OCR nelle applicazioni Python.

Caratteristiche principali:

  • Interfaccia con più motori OCR.
  • Fornisce una semplice API per l’estrazione del testo.
  • Può essere combinato con librerie di preprocessing delle immagini per risultati migliori.

PyOCR richiede Tesseract (motore OCR) e Pillow (libreria di elaborazione delle immagini). Puoi installarli utilizzando i seguenti comandi:

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]

Ora puoi installare le librerie pyocr e pillow usando pip:

pip3 install pyocr pillow
OR
pip install pyocr pillow

Ecco un esempio in Python che estrae il testo da un’immagine usando PyOCR e 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 è una libreria OCR sviluppata da PaddlePaddle, un framework di deep learning. Supporta più di 80 lingue e offre un’accuratezza all’avanguardia grazie all’uso di modelli di deep learning.

Caratteristiche principali:

  • Alta performance, specialmente per immagini con sfondi complessi.
  • Supporta rilevamento del testo, riconoscimento e analisi del layout.
  • Includi modelli pre-addestrati per una varietà di lingue.

Per installare PaddleOCR in Linux, usa:

pip3 install paddlepaddle paddleocr
OR
pip install paddlepaddle paddleocr

Ecco un esempio in Python che estrae il testo da un’immagine usando la libreria 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 è una libreria OCR ad alte prestazioni progettata specificamente per testi storici e multilingue. È costruita sopra OCRopus e fornisce funzionalità aggiuntive per layout complessi ed estrazione del testo.

Caratteristiche principali:

  • Miglior adatta per libri antichi e OCR multilingue.
  • Gestisce layout di testo complessi e font storici.
  • Utilizza l’apprendimento automatico per una migliore precisione di riconoscimento.

Per installare Kraken in Linux, utilizzare:

pip3 install kraken
OR
pip install kraken

Ecco un esempio in Python che estrae testo da un’immagine utilizzando la libreria 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 è il servizio OCR basato su cloud di Amazon che può analizzare documenti e moduli ed estrarre testo con alta precisione. Si integra perfettamente con altri servizi AWS.

Caratteristiche principali:

  • OCR basato su cloud con soluzioni scalabili.
  • Supporta l’analisi della struttura del documento, inclusi tabelle e moduli.
  • Integrazione con i servizi AWS per ulteriore elaborazione dei dati.

Per installare Textract in Linux, utilizzare:

pip3 install boto3
OR
pip install boto3

Ecco uno script Python di esempio che utilizza AWS Textract per estrarre testo da un documento (ad esempio, un PDF scannerizzato o un file immagine).

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'])
Conclusioni

La scelta della giusta libreria OCR in Python dipende dal caso d’uso specifico, dai requisiti linguistici e dalla complessità dei documenti che si stanno elaborando. Che si tratti di documenti storici, testi multilingue o semplici PDF scannerizzati, queste librerie forniscono strumenti potenti per l’estrazione di testo.

Per i principianti, Tesseract e EasyOCR sono ottimi punti di partenza grazie alla loro facilità d’uso e ampia diffusione. Tuttavia, per compiti più avanzati o specializzati, librerie come PaddleOCR, OCRopus e Kraken offrono maggiore flessibilità e precisione.

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