
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.
Vedi Elenco delle lingue in sviluppo
A causa delle risorse limitate, una issue più vecchia di 6 mesi verrà chiusa automaticamente. Riapri una issue se è critica.
Per il supporto aziendale, Jaided AI offre un servizio completo per sistemi OCR/AI personalizzati, dall'implementazione all'addestramento/finetuning fino alla distribuzione. Clicca qui per contattarci.