Command Palette

Search for a command to run...

Skew rompe OCR molto prima che lo faccia la risoluzione

Skew rompe OCR molto prima che lo faccia la risoluzione

T
Toolz Team
|Oct 21, 2026|18 min letto
Preferisci Toolz.dev su Google

Parte della raccolta Strumenti AI

AI Immagine al testo (OCR)

Estrai il testo da una foto o da uno screenshot in 13 lingue con Tesseract OCR in esecuzione nel tuo browser Gratuito, nessuna iscrizione e la tua immagine non viene mai caricata.

Usa il AI Immagine al testo (OCR)

Il consiglio che tutti danno sulla scansione del testo è di utilizzare la risoluzione più alta possibile e ottenere l'illuminazione giusta. Ho eseguito il motore utilizzato da questo sito contro una serie di immagini deliberatamente danneggiate per scoprire quale di queste questioni e la risposta non era nessuna delle due. La stessa frase è tornata perfettamente da un'immagine di un terzo della dimensione originale, perfettamente dal testo grigio su uno sfondo grigio e perfettamente da un JPEG salvato a Quality 25. Ciò che lo ha distrutto stava inclinando la pagina di cinque gradi. Ogni numero sotto è uscito da quella corsa e puntano a una lista di controllo diversa dal solito.

tl; dr: Tesseract legge il testo reso pulito fino a quando due cose specifiche non vanno male. L'inclinazione è la prima: da 0 a 3 gradi di skew ha dato un tasso di errore di carattere dello 0%, 5 gradi hanno dato il 2,9%, 12 gradi hanno dato il 16,7% e 20 gradi hanno dato il 32,4%. La dimensione è la seconda, ed è una scogliera piuttosto che una pendenza: il testo è rimasto perfetto fino a un'altezza capitale di circa 7 pixel e quindi è crollato all'85,3% di errori a 5,8 pixel. Basso contrasto, sfocatura e compressione JPEG pesante appena registrata. Raddrizza l'immagine prima di fare qualsiasi altra cosa. la convertitore da immagine a testo Esegue il motore nel tuo browser, quindi l'immagine non viene mai caricata.

Come sono stati prodotti questi numeri?

Rendendo una frase nota, danneggiando l'immagine in un modo alla volta, leggendola indietro e contando le modifiche necessarie per riparare il risultato.

La metrica è il tasso di errore di carattere: la distanza di Levenshtein tra ciò che diceva l'immagine e ciò che il motore ha restituito, diviso per la lunghezza della verità. Un tasso di errore del 2% su una riga di cinquanta caratteri è un carattere sbagliato. Il testo era di tre righe che mescolavano prosa, un numero di fattura, una data, un importo di valuta, un indirizzo e-mail e un numero di telefono, perché gli errori che contano in pratica si verificano nel secondo tipo di contenuto piuttosto che nel primo.

Un avvertimento appartiene in alto piuttosto che sepolto. Queste sono immagini di rendering, non fotografie. Ognuno isola una singola variabile, che è l'unico modo per attribuire un fallimento a una causa, ma arriva una foto reale di una pagina con più contemporaneamente: una leggera inclinazione, un'illuminazione irregolare attraverso la piega, un'oscillazione di movimento su un bordo e una fotocamera che ha affilato tutto prima di salvare. Le soglie seguenti sono quindi i casi migliori. Una fotografia che è proprio al limite su due assi andrà peggio di quanto suggerisca entrambi i numeri.

Il motore è il modello LSTM di Tesseract 4 attraverso Tesseract.js, che è esattamente ciò che funziona lo strumento, quindi questi non sono numeri da un sistema diverso.

Quanto è troppo sbieco?

tra i tre ei cinque gradi, che è meno inclinabile di quanto si noterà.

rotazione tasso di errore del carattere Confidenza segnalata
0 gradi 0,0% 95
1 grado 0,0% 95
2 gradi 0,0% 95
3 gradi 0,0% 94
5 gradi 2,9% 91
8 gradi 7,8% 82
12 gradi 16,7% 70
20 gradi 32,4% 66

Non succede nulla per tre gradi e poi cade da uno scaffale. Il motivo è nel modo in cui funziona il motore: trova righe di testo, quindi taglia ogni riga in caratteri. Una linea inclinata attraversa diverse file di pixel, quindi l'affettatura taglia la parte superiore di alcune lettere e la parte inferiore di altre e al modello viene chiesto di classificare i frammenti.

A 5 gradi gli errori erano piccoli e costosi. "Datated" è tornato come "DateQ" e "totale" come "TotG)". Entrambi sono una singola lettera all'interno di una parola che un essere umano leggerebbe direttamente, ed entrambi si sedettero accanto a un numero di fattura e un importo di valuta che una persona stava per copiare senza controllare.

Un telefono tenuto a mano su una pagina viene regolarmente esaurito di oltre cinque gradi. Questa è l'unica cosa che vale la pena correggere prima di eseguire qualsiasi cosa e la correzione è gratuita: ruota l'immagine fino a quando le linee non sono a livello.

Quanto può essere piccolo il testo prima che l'OCR fallisca?

Più piccolo di quanto ti aspetti, fino al punto in cui smette di funzionare del tutto.

Larghezza immagine Altezza lettera maiuscola tasso di errore Fiducia
1600 px ~29 px 0,0% 95
800 px ~14 px 0,0% 95
533 px ~10 px 0,0% 92
400 px ~7 px 0,0% 84
320 px ~6 px 85,3% 41
240 px ~4 px 100,0% 0

Le stesse tre righe si leggono perfettamente a un quarto della loro dimensione originale, dove ogni lettera maiuscola è alta circa sette pixel. Un passo più in basso e l'output era inutilizzabile, quindi vuoto.

Quella è una scogliera, non una sfumatura, e cambia il consiglio. "Utilizzare la risoluzione più alta che hai" non è sbagliato, ma descrive un problema che la maggior parte delle immagini non ha. Uno screenshot di una pagina web, una foto di un segno, un'immagine del telefono di una lettera stampata: tutti hanno molto più di sette pixel di altezza della lettera. Quello che hanno più spesso è un'inclinazione.

Il luogo in cui la scogliera morde è un raccolto da lontano. Testo sullo sfondo di una foto di vacanza, un segno attraverso una strada, una riga di piccola stampa all'interno di una scansione a tutta pagina alla risoluzione dello schermo. Se le lettere sono difficili da leggere con uno zoom al 100%, anche il motore è vicino al suo pavimento.

Il basso contrasto rovina la lettura?

No, e questo è stato il risultato che contraddiceva di più quello che mi aspettavo.

Testo grigio al numero 8A8A8A su sfondo grigio su #BDBDBD Rileggere con un tasso di errore dello 0,0% e una fiducia di 95, identico al nero su bianco. Una sfocatura gaussiana di tre pixel sull'intera immagine ha dato lo 0,6%. Un JPEG salvato a qualità 25 e scalato a metà ha dato lo 0,0%.

Il motivo è che il motore non legge i tuoi grigi. Binarizza prima l'immagine, trasformando tutto in bianco e nero con una soglia scelta dall'immagine, e un contrasto basso uniforme sopravvive a quel passo intatto. Ciò che non sopravvive è il contrasto che varia tra la pagina, che è ciò che un'ombra o un telefono flash produce: una soglia non può adattarsi a entrambe le metà dell'immagine.

Quindi la versione utile del consiglio di illuminazione è più stretta del solito. Anche l'illuminazione conta. L'illuminazione intensa no. Una foto debole e uniformemente illuminata di una pagina ne batte una luminosa con un'ombra nel mezzo.

Perché un layout a due colonne esce strapazzato?

Perché la lettura dell'ordine è un giudizio di layout e il motore lo esce dalla sola geometria.

Ho reso due blocchi di testo affiancati, tre righe ciascuno, su linee di base condivise. Il risultato è tornato intercalato:

LEFT ONE RIGHT ONE LEFT TWO RIGHT TWO LEFT THREE RIGHT THREE

Ogni parola è corretta. L'ordine è inutile. Il motore ha trovato sei righe di testo in tre posizioni verticali e leggono ogni riga attraverso, che è il comportamento corretto per una tabella e quello sbagliato per due colonne di prosa.

Spesso sopravvive una vera pagina di giornale o un PDF accademico, perché la grondaia tra le colonne è abbastanza ampia e coerente da rilevare la fase di segmentazione della pagina. Uno screenshot di un layout con due blocchi sciolti uno accanto all'altro, che è il caso comune di questo tipo di strumento, spesso non lo fa.

La soluzione affidabile è ritagliare. Esegui una colonna, copia il risultato, quindi esegui l'altra. Suona laborioso e impiega circa quindici secondi, il che è meno che ricostruire un paragrafo le cui frasi sono state mescolate.

Sa leggere la grafia?

non in modo affidabile, e il confine riguarda se le lettere si toccano piuttosto che se appaiono informali.

Non potevo testare la scrittura a mano reale senza fornire una fotografia, che avrebbe variabili miste, quindi ho testato tre caratteri di regolarità decrescente come sostituto:

fonte battesima tasso di errore Fiducia
Fumetto sans ms 0,0% 95
Pennello Script MT 5,9% 67
Snell a mano rotonda 20,6% 55

Comic Sans è informale e perfettamente leggibile per il motore, perché le sue lettere sono forme separate di larghezza costante. Snell Roundhand è una sceneggiatura connessa e un quinto dei personaggi è tornato sbagliato.

Questa è la vera distinzione. Il modello di Tesseract è stato addestrato sul tipo stampato e prevede di tagliare una linea in glifi discreti. La scrittura connessa non ha punti di taglio netti, quindi la segmentazione fallisce prima che il riconoscimento abbia una possibilità. La scrittura genuina è peggio di Snell Roundhand, non migliore, perché varia anche da lettera a lettera.

Se hai bisogno di leggere la scrittura a mano, questo è lo strumento sbagliato e così è ogni altro front-end Tesseract. Quel lavoro ha bisogno di un modello formato sulla scrittura a mano.

Quali personaggi sbaglia?

Lettere che sembrano cifre e la direzione è coerente.

Ho reso una riga dei soliti sospetti e l'ho letto:

truth:  O0 l1I 5S 8B 2Z rn/m
read:   00 111 5S 8B 2Z rn/m

Il capitale O è diventato uno zero. Minuscole L e Capital I sono diventate entrambe la cifra 1. Le coppie che si preoccupano di più, 5 contro S e 8 contro B, sono tornate corrette, così come RN contro M.

Il modello è che una lettera isolata con un glifo a forma di cifra viene letta come cifra. Nella prosa in esecuzione questo raramente conta, perché il modello linguistico attorno ad essa riporta il risultato alla parola. In un codice di riferimento, un numero di serie o una targa, non c'è una parola circostante per aiutare, ed è esattamente qui che viene utilizzato questo tipo di strumento.

Rileggi qualsiasi stringa che mescola lettere e cifre senza spazi. È l'unica classe di uscita in cui il motore ha torto con sicurezza.

Cosa ti dice il punteggio di fiducia?

All'incirca come è andata la pagina, e non se il numero a cui tieni è giusto.

Lo strumento mostra la confidenza media del motore come alta, media o bassa, con alta a 85 e oltre. Contro i tassi di errore misurati, quella mappatura è ampiamente sensata e ottimista al limite:

caso Fiducia Etichetta tasso di errore reale
Pulire 95 alto 0,0%
5 gradi di inclinazione 91 alto 2,9%
12 gradi di inclinazione 70 medio 16,7%
320 px di larghezza 41 volgare 85,3%
Script connesso 55 volgare 20,6%

Un punteggio basso è un avvertimento affidabile: tutto ciò che ha segnato sotto i 60 è stato davvero rotto. Un punteggio alto è una prova più debole di quanto sembri. Il caso di 5 gradi ha ottenuto un punteggio di 91, che l'interfaccia chiama alta, mentre macilerà silenziosamente una parola in una riga di fattura.

Usalo come rilevatore di fumo piuttosto che come garanzia. Basso significa non preoccuparsi di leggere l'output. Alto significa che la pagina nel suo insieme è andata bene, il che non è lo stesso di ogni personaggio che abbia ragione.

Quanto costa scaricare ogni lingua?

Tra 0,67 e 2,82 megabyte, una volta, quindi viene memorizzato nella cache.

Il motore ha bisogno di un file di dati addestrato per lingua. Poiché lo strumento esegue solo il modello LSTM, estrae il set interizzato della migliore qualità, che è notevolmente inferiore ai file che citano la maggior parte delle annotazioni OCR. Misurato dal CDN, la libreria è predefinita:

lingua scaricare lingua scaricare
inglese 2,82 MB hindi 1,32 MB
russo 2,56 MB bengalese 1,31 MB
spagnolo 2,00 MB coreano 1,50 MB
giapponese 1,94 MB tedesco 1,27 MB
Cinese (semplificato) 1,64 MB portoghese 1,33 MB
arabico 1,58 MB italiano 1,58 MB
francese 0,67 MB

Tutti e tredici insieme arrivano a circa 21 MB, che è meno di una fotografia da un telefono moderno. L'ipotesi comune che il cinese o il giapponese debbano essere enormi non regge qui: il cinese semplificato è 1,64 MB, più piccolo dell'inglese, perché il file memorizza un modello piuttosto che una libreria di glifi.

Perché la prima è più lenta della seconda?

Perché il primo sta scaricando e avviando un motore, e il secondo sta solo leggendo.

La prima esecuzione di un linguaggio recupera la build di WebAssembly di Tesseract, recupera il file di dati di quella lingua e inizializza un lavoratore. Dopodiché il lavoratore rimane in vita nella pagina e il file di dati viene memorizzato nella cache dal browser, quindi una seconda immagine nella stessa lingua inizia immediatamente. Il cambio delle lingue reinizializza il lavoratore ma non scarica nuovamente nulla di già recuperato.

Il riconoscimento stesso è veloce. Su questa macchina, la lettura dell'immagine di prova a tre linee ha impiegato 186 millisecondi per la versione pulita e tra i 70 ei 125 millisecondi per quelli danneggiati, il tutto su un lavoratore già in esecuzione. Per una pagina intera di testo aspettati un secondo o due anziché un decimo di uno, ma la prima attesa che noti è impostata, non la lettura.

Una volta che una lingua è stata memorizzata nella cache, lo strumento funziona senza alcuna rete, che è una vera funzionalità offline piuttosto che una linea di marketing.

Cosa dovresti fare a un'immagine prima di eseguire OCR?

Tre cose, in questo ordine, e la prima conta più delle altre due messe insieme.

  1. raddrizzalo. Ruota fino a quando le righe di testo non sono a livello. Tre gradi sono liberi, cinque no.
  2. ritagliare al testo. Questo risolve il problema della colonna, rimuove lo sfondo che il segmentatore deve rifiutare e rende il testo una quota maggiore del frame.
  3. Lascia stare tutto il resto. Non affilare, non alzare il contrasto, non convertire a mano in bianco e nero. Il motore si raccorda comunque e un filtro di affilatura aggiunge squilli attorno ai bordi delle lettere che prima non c'era.

La cosa che vale la pena aggiungere anziché rimuovere è la risoluzione, ma solo se sei vicino al pavimento. Passando da un'altezza capillare di 7 pixel a uno di 14 pixel, non è cambiato nulla nelle misurazioni. Passare da 6 a 7 ha cambiato tutto.

Quando è lo strumento sbagliato?

Quando l'immagine non è di testo, quando il testo è scritto a mano e quando ciò che desideri è un documento ricercabile piuttosto che un blocco di caratteri.

OCR ti dà le parole senza struttura: nessuna intestazione, nessuna cella di tabella, nessun limite di paragrafo di cui ti puoi fidare, nessun ordine di lettura su un layout complesso. Per un preventivo da uno screenshot o un indirizzo di una foto che è esattamente giusta. Per convertire un rapporto scansionato in qualcosa di modificabile è il primo di diversi passaggi.

Se quello che vuoi è una descrizione di un'immagine piuttosto che le parole stampate in essa, questo è un modello completamente diverso e uno strumento diverso. E se la fonte è un PDF generato anziché scansionato, il testo è già nel file: estrarlo direttamente mantiene il layout e non perde nulla, che nessuna quantità di riconoscimento delle immagini può corrispondere.

Perché questo viene eseguito nel browser?

Perché le immagini che le persone passano attraverso l'OCR sono quelle che vorrebbero caricare meno.

Ricevute, lettere bancarie, prescrizioni, passaporti, carte d'identità, una foto di un contratto, uno screenshot di una conversazione privata. L'alternativa abituale è un sito che prende la tua immagine, la elabora su un server di cui non sai nulla e mantiene tutto ciò che mantiene.

Qui il motore è in esecuzione web nella pagina, in un lavoratore. L'immagine viene decodificato nella memoria a schede, letta lì e viene visualizzato il testo. Non viene caricato nulla, non c'è coda e nessuna copia memorizzata e dopo la prima esecuzione l'intera cosa funziona offline. I costi sono il download della lingua una tantum e le immagini molto grandi sono limitate da ciò che la scheda può contenere.

Due cose che questo sito non fa ancora, e che appartengono alla stessa pipeline: raddrizzare una pagina fotografata e ritagliarla nel testo. Entrambi devono accadere in qualsiasi spettatore che hai già, che è l'unica cucitura imbarazzante nel flusso di lavoro sopra. Quello che viene dopo viene coperto: se la fonte è una foto di più pagine, La guida sulla combinazione di immagini si occupa di rimettere insieme i risultati.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!