Il Riconoscimento Ottico dei Caratteri (OCR) trasforma le immagini di testo—scansioni, foto da smartphone, PDF—in stringhe leggibili dalla macchina e, sempre più, in dati strutturati. L'OCR moderno è una pipeline che pulisce un'immagine, trova il testo, lo legge ed esporta metadati ricchi in modo che i sistemi a valle possano cercare, indicizzare o estrarre campi. Due standard di output ampiamente utilizzati sono hOCR, un microformato HTML per testo e layout, e ALTO XML, uno schema orientato a biblioteche/archivi; entrambi conservano posizioni, ordine di lettura e altri spunti di layout e sono supportati da motori popolari come Tesseract.
Pre-elaborazione. La qualità dell'OCR inizia con la pulizia dell'immagine: conversione in scala di grigi, denoising, sogliatura (binarizzazione) e raddrizzamento. I tutorial canonici di OpenCV coprono la sogliatura globale, adattiva e di Otsu —punti fermi per documenti con illuminazione non uniforme o istogrammi bimodali. Quando l'illuminazione varia all'interno di una pagina (pensa agli scatti del telefono), i metodi adattivi spesso superano una singola soglia globale; Otsu sceglie automaticamente una soglia analizzando l'istogramma. La correzione dell'inclinazione è altrettanto importante: il raddrizzamento basato su Hough (Trasformata di Hough) abbinato alla binarizzazione di Otsu è una ricetta comune ed efficace nelle pipeline di pre-elaborazione di produzione.
Rilevamento vs. riconoscimento. L'OCR è tipicamente suddiviso in rilevamento del testo (dov'è il testo?) e riconoscimento del testo (cosa dice?). Nelle scene naturali e in molte scansioni, i rilevatori completamente convoluzionali come EAST prevedono in modo efficiente quadrilateri a livello di parola o riga senza pesanti fasi di proposta e sono implementati in toolkit comuni (ad es. tutorial sul rilevamento del testo di OpenCV). Su pagine complesse (giornali, moduli, libri), la segmentazione di righe/regioni e l'inferenza dell'ordine di lettura sono importanti:Kraken implementa la segmentazione tradizionale di zone/righe e la segmentazione neurale della linea di base, con supporto esplicito per diversi script e direzioni (LTR/RTL/verticale).
Modelli di riconoscimento. Il classico cavallo di battaglia open-source Tesseract (reso open-source da Google, con radici in HP) si è evoluto da un classificatore di caratteri in un riconoscitore di sequenze basato su LSTM e può emettere PDF ricercabili, output compatibili con hOCR/ALTOe altro dalla CLI. I riconoscitori moderni si basano sulla modellazione di sequenze senza caratteri pre-segmentati. Connectionist Temporal Classification (CTC) rimane fondamentale, imparando gli allineamenti tra le sequenze di feature di input e le stringhe di etichette di output; è ampiamente utilizzato nelle pipeline di scrittura a mano e di testo di scena.
Negli ultimi anni, i Transformer hanno rimodellato l'OCR. TrOCR utilizza un encoder Vision Transformer più un decoder Text Transformer, addestrato su grandi corpora sintetici e poi messo a punto su dati reali, con ottime prestazioni su benchmark di testo stampato, scritto a mano e di scena (vedi anche documentazione di Hugging Face). In parallelo, alcuni sistemi eludono l'OCR per la comprensione a valle: Donut (Document Understanding Transformer) è un encoder-decoder senza OCR che produce direttamente risposte strutturate (come JSON chiave-valore) da immagini di documenti (repo, scheda del modello), evitando l'accumulo di errori quando un passaggio OCR separato alimenta un sistema IE.
Se si desidera una lettura del testo "batterie incluse" su molti script, EasyOCR offre una semplice API con oltre 80 modelli linguistici, restituendo riquadri, testo e confidenze, utile per prototipi e script non latini. Per i documenti storici, Kraken brilla con la segmentazione della linea di base e l'ordine di lettura consapevole dello script; per un addestramento flessibile a livello di riga, Calamari si basa sulla discendenza di Ocropy (Ocropy) con riconoscitori (multi-)LSTM+CTC e una CLI for la messa a punto di modelli personalizzati.
La generalizzazione dipende dai dati. Per la scrittura a mano, il Database di scrittura a mano IAM fornisce frasi in inglese diverse per scrittore per l'addestramento e la valutazione; è un set di riferimento di lunga data per il riconoscimento di righe e parole. Per il testo di scena, COCO-Text ha stratificato annotazioni estese su MS-COCO, con etichette per stampato/scritto a mano, leggibile/illeggibile, script e trascrizioni complete (vedi anche la pagina del progetto originale). Il campo si basa anche pesantemente sul pre-addestramento sintetico: SynthText in the Wild renderizza il testo in fotografie con geometria e illuminazione realistiche, fornendo enormi volumi di dati per pre-addestrare rilevatori e riconoscitori (riferimento codice e dati).
Le competizioni sotto l'ombrello Robust Reading di ICDAR mantengono la valutazione fondata. I compiti recenti enfatizzano il rilevamento/lettura end-to-end e includono il collegamento di parole in frasi, con il codice ufficiale che riporta precisione/richiamo/F-score, intersection-over-union (IoU) e metriche di distanza di modifica a livello di carattere, rispecchiando ciò che i professionisti dovrebbero monitorare.
L'OCR raramente termina con testo semplice. Archivi e biblioteche digitali preferiscono ALTO XML perché codifica il layout fisico (blocchi/righe/parole con coordinate) insieme al contenuto, e si abbina bene con il packaging METS. Il hOCR microformato, al contrario, incorpora la stessa idea in HTML/CSS usando classi come ocr_line e ocrx_word, rendendo facile visualizzare, modificare e trasformare con strumenti web. Tesseract espone entrambi, ad es. generando hOCR o PDF ricercabili direttamente dalla CLI (guida all'output PDF); wrapper Python come pytesseract aggiungono convenienza. Esistono convertitori per tradurre tra hOCR e ALTO quando i repository hanno standard di ingestione fissi —vedi questo elenco curato di strumenti per formati di file OCR.
La tendenza più forte è la convergenza: rilevamento, riconoscimento, modellazione del linguaggio e persino la decodifica specifica del compito si stanno fondendo in stack Transformer unificati. Il pre-addestramento su grandi corpora sintetici rimane un moltiplicatore di forza. I modelli senza OCR competeranno aggressivamente ovunque l'obiettivo siano output strutturati piuttosto che trascrizioni letterali. Aspettatevi anche implementazioni ibride: un rilevatore leggero più un riconoscitore in stile TrOCR per testo lungo, e un modello in stile Donut per moduli e ricevute.
Tesseract (GitHub) · Documentazione di Tesseract · Specifiche hOCR · Sfondo ALTO · Rilevatore EAST · Rilevamento del testo OpenCV · TrOCR · Donut · COCO-Text · SynthText · Kraken · Calamari OCR · ICDAR RRC · pytesseract · Scrittura a mano IAM · Strumenti per formati di file OCR · EasyOCR
L'Optical Character Recognition (OCR) è una tecnologia utilizzata per convertire vari tipi di documenti, come documenti cartacei scansionati, file PDF o immagini catturate da una fotocamera digitale, in dati modificabili e ricercabili.
L'OCR funziona analizzando l'immagine o il documento in ingresso, segmentando l'immagine in singoli caratteri, e confrontando ciascun carattere con un database di forme carattere utilizzando il riconoscimento di pattern o il riconoscimento delle caratteristiche.
L'OCR viene utilizzato in vari settori e applicazioni, tra cui la digitalizzazione di documenti stampati, l'attivazione di servizi di testo in voce, l'automazione dei processi di inserimento dati, e l'aiuto agli utenti con problemi di vista a interagire in modo più efficace con il testo.
Nonostante ci siano stati notevoli progressi nella tecnologia OCR, non è infallibile. L'accuratezza può variare a seconda della qualità del documento originale e delle specifiche del software OCR utilizzato.
Sebbene l'OCR sia principalmente progettato per il testo stampato, alcuni sistemi OCR avanzati sono anche in grado di riconoscere la scrittura a mano chiara e coerente. Tuttavia, il riconoscimento della scrittura a mano è generalmente meno preciso a causa della grande varietà di stili di scrittura individuali.
Sì, molti sistemi software OCR possono riconoscere più lingue. Tuttavia, è importante assicurarsi che la lingua specifica sia supportata dal software che si utilizza.
L'OCR sta per Optical Character Recognition ed è usato per riconoscere il testo stampato, mentre l'ICR, o Intelligent Character Recognition, è più avanzato ed è usato per riconoscere il testo scritto a mano.
L'OCR funziona meglio con font chiari, facilmente leggibili e dimensioni standard del testo. Anche se può lavorare con vari font e dimensioni, l'accuratezza tende a diminuire quando si tratta di font insoliti o dimensioni del testo molto piccole.
L'OCR può avere difficoltà con documenti a bassa risoluzione, font complessi, testi stampati male, scrittura a mano, e documenti con sfondi che interferiscono con il testo. Inoltre, anche se può lavorare con molte lingue, potrebbe non coprire ogni lingua perfettamente.
Sì, l'OCR può eseguire la scansione di testi colorati e sfondi colorati, sebbene generalmente sia più efficace con combinazioni di colori ad alto contrasto, come il testo nero su sfondo bianco. L'accuratezza può diminuire quando il colore del testo e dello sfondo non ha un contrasto sufficiente.
Il formato di immagine INLINE è un modo relativamente nuovo e innovativo per incorporare immagini direttamente nel codice di una pagina web o applicazione, senza la necessità di file di immagine esterni. Questo formato è particolarmente utile per immagini di piccole dimensioni come icone, loghi ed elementi dell'interfaccia utente, che sono cruciali per le prestazioni e l'estetica di un sito web o di un'app. Le immagini INLINE sono codificate in un formato basato su testo, che consente loro di essere facilmente incluse in file HTML, CSS o persino JavaScript, riducendo così il numero di richieste HTTP che un browser deve effettuare, accelerando il caricamento delle pagine e migliorando l'esperienza utente.
Il formato di immagine INLINE si basa sul concetto di URI dati (Uniform Resource Identifier), che è uno schema di codifica dei dati in una stringa di identificatore di risorse uniforme. Un URI dati è una stringa codificata in base64 che rappresenta dati binari, in questo caso un file immagine. La codifica base64 è un metodo per convertire dati binari in una stringa di caratteri ASCII, che è sicura da includere in URL o documenti HTML. La stringa risultante può essere molto lunga, a seconda delle dimensioni dell'immagine, ma per le immagini di piccole dimensioni, i vantaggi delle richieste HTTP ridotte spesso superano il costo dell'aumento delle dimensioni HTML.
Per includere un'immagine INLINE in una pagina web, i dati dell'immagine devono prima essere codificati in base64. Ciò può essere fatto utilizzando vari strumenti o librerie di programmazione che gestiscono la codifica base64. Una volta codificata l'immagine, viene aggiunta come prefisso "data:image/[MIME-type];base64", dove [MIME-type] viene sostituito con il tipo MIME appropriato per l'immagine, come "image/png" o "image/jpeg". Questa stringa può quindi essere utilizzata come sorgente per un tag immagine in HTML, come immagine di sfondo in CSS o manipolata tramite JavaScript.
Uno dei principali vantaggi del formato di immagine INLINE è la riduzione del numero di richieste HTTP. Tradizionalmente, ogni immagine su una pagina web richiede una richiesta HTTP separata al server per recuperare il file. Incorporando i dati dell'immagine direttamente nell'HTML o nel CSS, le immagini INLINE eliminano queste richieste aggiuntive, il che può migliorare significativamente i tempi di caricamento, specialmente su pagine con molte immagini di piccole dimensioni. Ciò è particolarmente vantaggioso per gli utenti mobili, che potrebbero avere connessioni più lente o meno affidabili.
Un altro vantaggio delle immagini INLINE è la facilità di manutenzione e distribuzione. Poiché le immagini fanno parte del codice, non è necessario gestire file di immagine separati sul server. Ciò può semplificare il processo di distribuzione, poiché c'è solo un file da trasferire, e può anche semplificare la manutenzione del sito web o dell'applicazione, poiché tutte le risorse sono contenute nella base di codice. Inoltre, le immagini INLINE possono essere generate dinamicamente utilizzando script lato server o JavaScript lato client, consentendo design più flessibili e interattivi.
Tuttavia, ci sono anche alcuni inconvenienti nell'utilizzo di immagini INLINE. Il più significativo è l'aumento delle dimensioni del file HTML o CSS. Poiché la stringa codificata in base64 è più grande della rappresentazione binaria dell'immagine, le immagini INLINE possono rendere i file in cui sono incorporate significativamente più grandi. Ciò può portare ad un aumento dei tempi di caricamento se l'aumento delle dimensioni del file supera i guadagni in termini di prestazioni derivanti dalla riduzione delle richieste HTTP. È quindi importante utilizzare le immagini INLINE con giudizio e solo per immagini di piccole dimensioni in cui i vantaggi sono più evidenti.
Un altro potenziale problema con le immagini INLINE è la memorizzazione nella cache. Quando le immagini vengono fornite come file separati, il browser può memorizzare questi file nella cache e riutilizzarli nei successivi caricamenti di pagina, il che può migliorare notevolmente le prestazioni. Tuttavia, quando le immagini sono incorporate direttamente nell'HTML o nel CSS, non vengono memorizzate nella cache separatamente. Al contrario, l'intero file HTML o CSS deve essere memorizzato nella cache. Se questi file cambiano frequentemente, ciò può annullare i vantaggi della memorizzazione nella cache, poiché il browser dovrà scaricare nuovamente l'intero file, anche se solo una piccola parte di esso è cambiata.
Nonostante questi inconvenienti, le immagini INLINE sono ampiamente utilizzate e supportate su tutti i browser moderni. Sono particolarmente apprezzate per l'uso in framework e librerie di sviluppo web che mirano a semplificare il processo di sviluppo e migliorare le prestazioni. Molti di questi framework includono strumenti per convertire automaticamente le immagini in formato INLINE durante il processo di compilazione, rendendo più semplice per gli sviluppatori sfruttare questa tecnica senza dover codificare manualmente ogni immagine.
Oltre ad essere utilizzate nello sviluppo web, le immagini INLINE possono essere utilizzate anche in altri contesti in cui è vantaggioso incorporare immagini direttamente nel codice. Ad esempio, possono essere utilizzate nei modelli di posta elettronica per garantire che le immagini vengano visualizzate correttamente senza fare affidamento su server esterni, che possono essere bloccati dai client di posta elettronica. Possono anche essere utilizzate nello sviluppo di app mobili, dove la riduzione del numero di risorse che devono essere caricate può migliorare le prestazioni dell'app e ridurre l'utilizzo dei dati.
Il formato di immagine INLINE ha anche implicazioni per la sicurezza. Poiché le immagini fanno parte del codice, sono meno suscettibili a determinati tipi di attacchi, come l'hotlinking, in cui un sito esterno utilizza immagini ospitate su un altro server senza autorizzazione. Tuttavia, poiché i dati dell'immagine sono codificati in base64, può essere più difficile eseguire la scansione alla ricerca di contenuti dannosi, come malware nascosto. Gli sviluppatori devono assicurarsi che le immagini che codificano provengano da fonti attendibili e siano state adeguatamente controllate per i rischi per la sicurezza.
L'accessibilità è un'altra considerazione quando si utilizzano immagini INLINE. Proprio come con i tradizionali file di immagine, è importante fornire descrizioni di testo alternative per le immagini INLINE per garantire che siano accessibili agli utenti con disabilità visive. Ciò può essere fatto includendo un attributo "alt" nel tag immagine HTML, che descrive il contenuto o la funzione dell'immagine. Senza questo, le immagini INLINE possono presentare le stesse sfide di accessibilità di qualsiasi altra immagine sul web.
L'ottimizzazione è fondamentale quando si lavora con immagini INLINE. Poiché le stringhe codificate in base64 sono più grandi dei dati binari originali, è importante ottimizzare le immagini prima di codificarle. Ciò può comportare la riduzione delle dimensioni del file comprimendo l'immagine, riducendone le dimensioni o utilizzando un formato di immagine più efficiente. Ad esempio, le immagini vettoriali, come quelle in formato SVG, possono spesso essere utilizzate al posto delle immagini raster per icone e loghi e possono essere incorporate direttamente nell'HTML o nel CSS senza la necessità della codifica base64.
In conclusione, il formato di immagine INLINE è un potente strumento per sviluppatori e designer web che cercano di migliorare le prestazioni e l'esperienza utente dei loro siti web e applicazioni. Incorporando le immagini direttamente nel codice, le immagini INLINE possono ridurre le richieste HTTP, semplificare la distribuzione e consentire design più interattivi. Tuttavia, gli sviluppatori devono essere consapevoli dei potenziali inconvenienti, come l'aumento delle dimensioni dei file e i problemi di memorizzazione nella cache, e adottare misure per ottimizzare e proteggere le proprie immagini. Se utilizzate in modo appropriato, le immagini INLINE possono essere una parte efficace di una moderna strategia di sviluppo web.
Questo convertitore funziona interamente nel tuo browser. Quando selezioni un file, viene letto in memoria e convertito nel formato selezionato. Puoi quindi scaricare il file convertito.
Le conversioni iniziano immediatamente e la maggior parte dei file viene convertita in meno di un secondo. I file più grandi potrebbero richiedere più tempo.
I tuoi file non vengono mai caricati sui nostri server. Vengono convertiti nel tuo browser e il file convertito viene quindi scaricato. Non vediamo mai i tuoi file.
Supportiamo la conversione tra tutti i formati di immagine, inclusi JPEG, PNG, GIF, WebP, SVG, BMP, TIFF e altro.
Questo convertitore è completamente gratuito e sarà sempre gratuito. Poiché funziona nel tuo browser, non dobbiamo pagare per i server, quindi non dobbiamo farti pagare.
Sì! Puoi convertire quanti file vuoi contemporaneamente. Basta selezionare più file quando li aggiungi.