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/