
OCR pronto all'uso con oltre 80 lingue supportate e tutti i sistemi di scrittura più diffusi, tra cui latino, cinese, arabo, devanagari, cirillico, ecc.
OCR pronto all'uso con oltre 80 lingue supportate e tutti i sistemi di scrittura più diffusi, tra cui: latino, cinese, arabo, devanagari, cirillico, ecc.
Prova la demo sul nostro sito web
Integrato in Huggingface Spaces 🤗 usando Gradio. Prova la Web Demo:
24 settembre 2024 - Versione 1.7.2



Installazione tramite pip
Per l'ultima versione stabile:
pip install easyocr
Per l'ultima versione di sviluppo:
pip install git+https://github.com/JaidedAI/EasyOCR.git
Nota 1: per Windows, installa prima torch e torchvision seguendo le istruzioni ufficiali qui https://pytorch.org. Sul sito di pytorch, assicurati di selezionare la versione CUDA giusta per il tuo sistema. Se intendi eseguire solo in modalità CPU, seleziona CUDA = None.
Nota 2: forniamo anche un Dockerfile qui.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
L'output sarà in formato lista; ogni elemento rappresenta rispettivamente un bounding box, il testo rilevato e il livello di confidenza.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Nota 1: ['ch_sim','en'] è l'elenco delle lingue che vuoi leggere. Puoi passare
più lingue contemporaneamente, ma non tutte le lingue possono essere usate insieme.
L'inglese è compatibile con ogni lingua e le lingue che condividono caratteri comuni sono di solito compatibili tra loro.
Nota 2: invece del percorso del file chinese.jpg, puoi anche passare un oggetto immagine OpenCV (array numpy) o un file immagine come byte. Anche un URL di un'immagine grezza è accettabile.
Nota 3: la riga reader = easyocr.Reader(['ch_sim','en']) serve a caricare un modello in memoria. Richiede tempo, ma deve essere eseguita una sola volta.
Puoi anche impostare detail=0 per un output più semplice.
reader.readtext('chinese.jpg', detail = 0)
Risultato:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
I pesi del modello per la lingua scelta verranno scaricati automaticamente, oppure puoi scaricarli manualmente dall'model hub e inserirli nella cartella '~/.EasyOCR/model'
Se non hai una GPU, o la tua GPU ha poca memoria, puoi eseguire il modello in modalità solo CPU aggiungendo gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Per maggiori informazioni, leggi il tutorial e la Documentazione API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Per il modello di riconoscimento, leggi qui.
Per il modello di rilevamento (CRAFT), leggi qui.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
L'idea è di poter collegare qualsiasi modello all'avanguardia a EasyOCR. Ci sono molti geni che cercano di creare modelli di rilevamento/riconoscimento migliori, ma qui non stiamo cercando di essere geni. Vogliamo solo rendere i loro lavori rapidamente accessibili al pubblico... gratuitamente. (beh, crediamo che la maggior parte dei geni voglia che il proprio lavoro abbia un impatto positivo il più veloce e grande possibile) La pipeline dovrebbe essere simile al diagramma qui sotto. Gli slot grigi sono segnaposto per i moduli azzurri sostituibili.

Questo progetto si basa su ricerca e codice provenienti da diversi articoli scientifici e repository open-source.
Tutta l'esecuzione del deep learning è basata su Pytorch. ❤️
L'esecuzione del rilevamento usa l'algoritmo CRAFT di questo repository ufficiale e il loro articolo (Grazie @YoungminBaek di @clovaai). Usiamo anche il loro modello pre-addestrato. Lo script di addestramento è fornito da @gmuffiness.
Il modello di riconoscimento è una CRNN (articolo). È composto da 3 componenti principali: estrazione delle caratteristiche (attualmente usiamo Resnet) e VGG, etichettatura delle sequenze (LSTM) e decodifica (CTC). La pipeline di addestramento per l'esecuzione del riconoscimento è una versione modificata del framework deep-text-recognition-benchmark. (Grazie @ku21fan di @clovaai) Questo repository è una gemma che merita più riconoscimento.
Il codice del beam search è basato su questo repository e sul suo blog. (Grazie @githubharald)
La sintesi dei dati è basata su TextRecognitionDataGenerator. (Grazie @Belval)
E una buona lettura sul CTC da distill.pub qui.
Facciamo avanzare l'umanità insieme rendendo l'AI disponibile a tutti!
3 modi per contribuire:
Programmatore: invia una PR per piccoli bug/miglioramenti. Per quelli più grandi, discutine con noi aprendo prima una issue. C'è un elenco di possibili issue di bug/miglioramenti etichettate con 'PR WELCOME'.
Utente: dicci come EasyOCR è utile a te/alla tua organizzazione per incoraggiare ulteriori sviluppi. Inoltre, segnala i casi di errore nella Sezione Issue per aiutare a migliorare i modelli futuri.
Tech leader/Guru: se hai trovato utile questa libreria, spargi la voce! (Vedi il post di Yann Lecun su EasyOCR)
Per richiedere una nuova lingua, devi inviarci una PR con i 2 file seguenti:
Se la tua lingua ha elementi unici (come 1. arabo: i caratteri cambiano forma quando sono collegati tra loro + scrittura da destra a sinistra 2. tailandese: alcuni caratteri devono stare sopra la riga e altri sotto), istruiscici al meglio delle tue capacità e/o fornisci link utili. È importante curare i dettagli per ottenere un sistema che funzioni davvero.
Infine, comprendi che la nostra priorità dovrà andare alle lingue popolari o agli insiemi di lingue che condividono grandi porzioni dei loro caratteri tra loro (diccelo anche se è il caso della tua lingua). Ci vogliono almeno una settimana per sviluppare un nuovo modello, quindi potresti dover attendere un po' per il rilascio del nuovo modello.
A causa delle risorse limitate, una issue più vecchia di 6 mesi verrà chiusa automaticamente. Riapri una issue se è critica.