Script Python moderno per estrarre e analizzare il testo presente nelle etichette farmaceutiche usando OCR (Optical Character Recognition) con OpenCV e Tesseract.
- Python 3.9+
- Tesseract OCR 5.0+
macOS:
brew install tesseract tesseract-langUbuntu/Debian:
sudo apt-get update
sudo apt-get install tesseract-ocr tesseract-ocr-ita tesseract-ocr-engWindows: Scarica e installa da: https://github.com/UB-Mannheim/tesseract/wiki
# Crea ambiente virtuale
python3 -m venv .venv
# Attiva ambiente virtuale
source .venv/bin/activate # macOS/Linux
# oppure
.venv\Scripts\activate # Windows
# Installa dipendenze
pip install -r requirements.txtopencv-python==4.10.0.84
pillow==10.4.0
pytesseract==0.3.13
matplotlib==3.9.2
numpy==1.26.4
pandas==2.2.3numpy/
├── README.md # Questo file
├── final_text_analysis.py # Script completo (analisi dettagliata)
├── extract_codes.py # Script semplificato (solo codici)
├── img.jpeg # Immagine etichetta farmaceutica
├── .venv/ # Ambiente virtuale Python
└── preview_*.jpg # Immagini di anteprima (generate automaticamente)
# Attiva l'ambiente virtuale
source .venv/bin/activate
# Esegui l'analisi completa
python3 final_text_analysis.pyOutput:
🔍 Avvio analisi finale testo etichetta farmaceutica...
======================================================================
✅ Immagine caricata: img.jpeg
📏 Dimensioni: (1024, 1568, 3)
📊 RISULTATI TROVATI: 53 metodi testati
🎯 RISULTATI MIGLIORI: 51 selezionati
📊 RIASSUNTO FINALE:
-------------------------
🔢 CODICI IDENTIFICATI: 007943469, 027244072, 27244072
======================================================================
# Attiva l'ambiente virtuale
source .venv/bin/activate
# Estrai solo i codici
python3 extract_codes.pyOutput:
✅ Analizzando: img.jpeg
🔢 CODICI IDENTIFICATI:
1. 007943469
2. 27244072
- Original: Immagine originale in scala di grigi
- Binary OTSU: Binarizzazione con soglia OTSU
- Adaptive: Soglia adattiva
- Gaussian: Filtro gaussiano
- Denoised: Riduzione del rumore
- Equalized: Equalizzazione dell'istogramma
- Resized 2x/3x: Ridimensionamento per migliorare la risoluzione
- Default: Configurazione standard
- Single Block: Blocco singolo
- Single Word: Parola singola
- Single Line: Riga singola
- Raw Line: Riga grezza
- Sparse Text: Testo sparso
- English Only: Solo inglese
- Italian Only: Solo italiano
- Codici identificativi: Codici a barre e codici numerici
- Nome farmaco: Nome del medicinale
- Dosaggio: Quantità del principio attivo
- Date: Date di scadenza o produzione
- Numeri di lotto: Codici di tracciabilità
Per un'etichetta farmaceutica standard, lo script identifica:
- Codici principali: 007943469 (barcode principale)
- Codici secondari: 027244072 (codice lotto)
- Farmaco: FLOMAX 350 MG
- Confidenza: 50-70% (tipico per OCR su etichette)
Sostituisci img.jpeg con la tua immagine:
image_path = "tua_immagine.jpg"Modifica le configurazioni Tesseract:
tesseract_configs = [
("Default", "--oem 3 --psm 6 -l ita+eng+fra"), # Ex. Aggiungi francese
# ... altre configurazioni
]Modifica la soglia minima:
good_results = [r for r in all_results if r['confidence'] > 50] # Ex. Cambia da 30 a 50# Verifica installazione
tesseract --version
# Se non trovato, reinstalla
brew install tesseract tesseract-lang- Verifica la qualità dell'immagine
- Prova con immagini a risoluzione più alta
- Controlla che il testo sia ben visibile
- Verifica che l'immagine contenga testo leggibile
- Controlla che il file immagine sia valido
- Prova con diversi formati immagine (JPG, PNG, TIFF)
Lo script genera automaticamente:
preview_*.jpg: Immagini di anteprima per debug- Output console: Risultati dell'analisi
- Formati supportati: JPG, PNG, TIFF, BMP
- Risoluzione consigliata: > 300 DPI
- Lingue supportate: Italiano, Inglese
- Tempo di esecuzione: 10-30 secondi (dipende dalla complessità)
Per migliorare lo script:
- Aggiungi nuovi metodi di preprocessing
- Migliora i pattern di riconoscimento farmaceutico
- Aggiungi supporto per altre lingue
- Ottimizza le performance
Questo script è fornito "as is" per scopi educativi e di ricerca.