Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Want to do  handwritten OCR? This blog is a comprehensive overview of the latest methods of handwriting recognition using deep learning. We've reviewed the latest research and papers and have also built a handwriting reader from scratch.


Nanoneți API OCR are multe interesante cazuri de utilizare. Discutați cu un expert Nanonets AI pentru a afla mai multe.


Introducere

Optical Character Recognition(OCR) market size is expected to be USD 13.38 billion by 2025 with a year on year growth of 13.7 %. This growth is driven by rapid digitization of business processes using OCR to reduce their labor costs and to save precious man hours. Although OCR has been considered a solved problem there is one key component of it, Handwriting Recognition (Handwriting OCR) or Handwritten Text Recognition(HTR) which is still considered a challenging problem statement. The high variance in handwriting styles across people and poor quality of the handwritten text compared to printed text pose significant hurdles in converting it to machine readable text. Nevertheless it's a crucial problem to solve for multiple industries like healthcare, insurance and banking.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning
Sursă :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Progresele recente în învățarea profundă, cum ar fi apariția arhitecturilor transformatoare, au accelerat progresul nostru în depistarea recunoașterii textului scris de mână. Recunoașterea textului scris de mână este denumită Intelligent Character Recognition (ICR) datorită faptului că algoritmii necesari pentru rezolvarea ICR au nevoie de mult mai multă inteligență decât rezolvarea OCR generică.

In this article we will be learning about the task of handwritten text recognition, it's intricacies and how we can solve it using deep learning techniques.


Doriți să extrageți date din formulare scrise de mână? Du-te la Nanoneți și începeți să construiți modele OCR de scriere de mână gratuit!


Provocări în recunoașterea scrisului de mână

  1. Variabilitatea uriașă și ambiguitatea accidentelor vasculare cerebrale de la persoană la persoană
  2. Stilul de scriere de mână al unei persoane, de asemenea, variază din când în când și este inconsecvent
  3. Calitate slabă a documentului/imaginei sursă din cauza degradării în timp
  4. Textul din documentele tipărite stau în linie dreaptă, în timp ce oamenii nu trebuie să scrie o linie de text în linie dreaptă pe hârtie albă
  5. Scrisul de mână cursiv face ca separarea și recunoașterea caracterelor să fie dificile
  6. Textul scris de mână poate avea o rotație variabilă la dreapta, ceea ce este în contrast cu textul tipărit, unde tot textul este drept.
  7. Colectarea unui set de date bun etichetat pentru a învăța nu este ieftină în comparație cu datele sintetice

Cazuri de utilizare

Sănătate și produse farmaceutice

Digitalizarea prescripțiilor pentru pacienți este un punct de durere major în industria medicală/farmaceutică. De exemplu, Roche manipulează zilnic milioane de petabytes de PDF-uri medicale. Un alt domeniu în care detectarea textului scris de mână are un impact cheie este înregistrarea pacienților și digitizarea formularelor. Adăugând recunoașterea scrisului de mână la setul lor de instrumente de servicii, spitalele/produsele farmaceutice pot îmbunătăți semnificativ experiența utilizatorului

Asigurări

O mare industrie de asigurări primește peste 20 de milioane de documente pe zi, iar o întârziere în procesarea cererii poate avea un impact teribil asupra companiei. Documentul de revendicare poate conține diferite stiluri de scriere de mână și automatizarea manuală pură a procesării revendicărilor va încetini complet procesul.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning
Sursa :- https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Bancar

Oamenii scriu cecuri în mod regulat, iar cecurile joacă încă un rol major în majoritatea tranzacțiilor fără numerar. În multe țări în curs de dezvoltare, procedura actuală de procesare a cecului necesită ca un angajat al băncii să citească și să introducă manual informațiile prezente pe un cec și, de asemenea, să verifice intrările precum semnătura și data. Întrucât un număr mare de cecuri trebuie procesate în fiecare zi într-o bancă, un sistem de recunoaștere a textului scris de mână poate economisi costuri și ore de muncă umană

Biblioteci online

Cantități uriașe de cunoștințe istorice sunt digitalizate prin încărcarea scanărilor de imagini pentru a avea acces la întreaga lume. Dar acest efort nu este foarte util până când nu poate fi identificat textul din imagini care poate fi indexat, interogat și răsfoit. Recunoașterea scrisului de mână joacă un rol cheie în aducerea la viață a documentelor, cărților poștale, cercetărilor etc. medievale și din secolul XX.

Metode

Metodele de recunoaștere a scrisului de mână pot fi clasificate în general în cele două tipuri de mai jos

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning
  1. Metode online :- Metodele online implică un stilou/pentru digital și au acces la informațiile despre contur, locația stiloului în timp ce textul este scris, așa cum se vede în figura din dreapta de mai sus. Deoarece au tendința de a avea o mulțime de informații cu privire la fluxul de text care este scris, pot fi clasificate cu o precizie destul de mare, iar demarcația dintre diferitele caractere din text devine mult mai clară.
  2. Metode offline :- Offline methods involve recognizing text once it's written down and hence won't have information to the strokes/directions involved during writing with a possible addition of some background noise from the source i.e paper.

In real world it's not always possible/scalable to carry a digital pen with sensors to capture stroke information and hence the task of recognizing text offline is a much more relevant problem. Thus, now we will discuss various techniques to solve the problem of recognizing offline text.

tehnici

The initial approaches of solving handwriting recognition involved Machine Learning methods like Hidden Markov Models(HMM), SVM etc. Once the initial text is pre-processed, feature extraction is performed to identify key information such as loops, inflection points, aspect ratio etc. of an individual character. These generated features are now fed to a classifier say HMM to get the results. The performance of machine learning models is pretty limited due to manual feature extraction phase and their limited capacity of learning. Feature extraction step varies for every individual language and hence is not scalable. With the advent of deep learning came tremendous improvements in accuracy of handwriting recognition. Let's discuss few of the prominent research in the area of deep learning for handwriting recognition

Rețele neuronale recurente multidimensionale

RNN/LSTM as we know can deal with sequential data to identify temporal patterns and generate results. But they are limited to dealing with 1D data and hence won't be directly applicable to image data.  To solve this problem, the authors in this paper proposed a multi-dimensional RNN/LSTM structure as can be seen in the figure below

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Următoarea este diferența dintre un RNN general și un RNN multidimensional. Într-un RNN general, stratul ascuns spune că i primește starea de la un strat ascuns anterior în timpul i-1. În RNN multidimensional să spunem, de exemplu, un RNN bidimensional, stratul ascuns (i, j) primește stări de la mai multe straturi ascunse anterioare, adică (i-2, j) și (i, j-1) și astfel captează contextul din ambele înălțime și lățime într-o imagine, care este esențială pentru a obține o înțelegere clară a regiunii locale de către o rețea. Acest lucru este extins și mai mult pentru a obține informații nu numai de la straturile anterioare, ci și de la straturile viitoare, similar modului în care un BI-LSTM primește informații de la t-1 și t+1. În mod similar, un strat ascuns 1D MDRNN i pot primi acum informații (i-2, j), (i, j-1), (i+1, j), (i, j+1) captând astfel contextul în toate direcțiile

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Întreaga structură a rețelei este prezentată mai sus. Este folosit MDLSTM, ceea ce nu este altceva decât înlocuirea blocului RNN cu un bloc LSTM din discuția de mai sus despre MDRNN. Intrarea este împărțită în blocuri de dimensiunea 3×4 care este acum alimentată în straturi MDSTM. Rețeaua are o structură ierarhică de straturi MDLSTM urmate de straturi feed-forward (ANN) în tandem. Apoi rezultatul final este convertit într-un vector 1D și este dat funcției CTC pentru a genera ieșire

Clasificare temporală conecționistă (CTC) is an algorithm used to deal with tasks like speech recognition, handwriting recognition etc. where just the input data and the output transcription is available but there are no alignment details provided i.e how a particular region in audio for speech or particular region in images for handwriting is aligned to a specific character. Simple heuristics such as giving each character same area won't work since the amount of space each character takes varies in handwriting from person to person and time to time.

Pentru cazul nostru de utilizare pentru recunoașterea scrisului de mână, luați în considerare regiunile imaginii de intrare pentru o anumită propoziție ca intrare X=[x1,x2,…,x**T] în timp ce rezultatul așteptat ca Y=[y1,y2,…,y**U] . Given X we are supposed to find accurate Y. CTC algorithm works by taking input X and giving distribution over all possible Y's using which we can make a prediction for final output.

CTC uses a basis character say – to differentiate between duplicate characters and repeated characters in a input region. For example a particular character can span multiple regions of input and thus CTC would output the same character consecutively. Example:- Input james and Output of CTC is jjaammmees. The final output is derived by collapsing the repeated outputs and hence we get james. But now to present duplicate characters say 'l' in hello, we need to have a separation in place and thus all outputs are separated by hyphen(-). Now the output for hello could be h-ee-ll-lll-oo which if collapsed will become hello and not helo. More information on how CTC works can be seen here CTC.

While decoding the output of CTC based on the simple heuristic of highest probability for each position, we might get results which might not make any sense in the real world. To solve this we might employ a different decoder to improve the results. Let's discuss different types of decodings

  1. Cea mai bună cale de decodare :- Aceasta este decodarea generică despre care am discutat până acum. La fiecare poziție luăm rezultatul modelului și găsim rezultatul cu cea mai mare probabilitate.
  2. Decodare căutare fascicul :- În loc să luați o singură ieșire din rețea de fiecare dată când căutarea fasciculului sugerează menținerea mai multor căi de ieșire cu cele mai mari probabilități și extinderea lanțului cu noi ieșiri și căi de eliminare cu probabilități mai mici pentru a menține dimensiunea fasciculului constantă. Rezultatele obținute prin această abordare sunt mai precise decât utilizarea abordării greedy
  3. Căutare fascicul cu model de limbă :- Beam search provides more accurate results than grid search but still it won't solve the problem of having meaningful results. To solve this we can use a language model along with beam search using both probabilities from the model and the language model to generate final results.

Mai multe detalii despre generarea unor rezultate precise de decodificare pot fi analizate în acest articol articol

Encoder-Decoder și Rețele de Atenție

Seq2Seq models having Encoder-decoder networks have recently been popular for solving the tasks of speech recognition, machine translation etc and thus have been extended to solve the use-case of handwriting recognition by deploying an additional attention mechanism. Let's discuss some seminal research in this area

Scanează, participă și citește

În această lucrare fundamentală Scan, Attend and Read(SAR), autorii propun utilizarea unui model bazat pe atenție pentru recunoașterea textului de mână de la capăt la capăt. Contribuția principală a cercetării este transcrierea automată a textului fără segmentarea în linii ca pas de preprocesare și astfel poate scana o pagină întreagă și da rezultate.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

SAR folosește o arhitectură bazată pe MDLSTM similară cu cea pe care am discutat mai sus, cu o mică modificare la nivelul final. După ultimul strat liniar, adică blocul Sum final din figura de mai sus, hărțile caracteristicilor sunt restrânse în dimensiunea verticală și se aplică o funcție finală softmax pentru a obține rezultate.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Arhitectura SAR constă dintr-o arhitectură MDLSTM care acționează ca extractor de caracteristici. Modulul de colaps final cu o ieșire softmax și pierdere CTC este înlocuit cu un modul de atenție și un decodor LSTM. Modelul de atenție utilizat este o combinație hibridă de atenție bazată pe conținut și atenție bazată pe locație, care este explicată mai detaliat în lucrarea următoare. Modulele decodorului LSTM preiau starea anterioară, harta atenției anterioară și caracteristicile codificatorului pentru a genera caracterul final de ieșire și vectorul de stare pentru următoarea predicție.

Convoluți, participați și vrăjiți

Această lucrare propune un model secvență-la-secvență bazat pe atenție pentru recunoașterea cuvintelor scrise de mână. Arhitectura propusă are trei părți principale: un codificator, format dintr-un CNN și un GRU bidirecțional, un mecanism de atenție dedicat concentrării pe caracteristicile pertinente și un decodor format dintr-un GRU unidirecțional, capabil să scrie cuvântul corespunzător, personaj cu caracter.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

The encoder uses a CNN to extract visual features. A pre-trained VGG-19-BN architecture is used as a feature extractor. The input image is converted into feature map X which is then reshaped into X' by splitting all channels column wise and combining them to get the sequential information. X' is further converted to H by using a bi-directional GRU. GRU is a neural network similar to LSTM in nature and can capture temporal information.

În plus, un model de atenție este utilizat în timp ce se prezică ieșirea de la decodor. Lucrarea discută două tipuri diferite de mecanisme de atenție explorate.

  1. Atenție bazată pe conținut :- Ideea din spatele acestui lucru este de a găsi similitudinea între starea ascunsă curentă a decodorului și harta caracteristicilor de la encoder. Putem găsi cei mai corelați vectori de caracteristici în harta caracteristică a codificatorului, care poate fi folosit pentru a prezice caracterul curent la pasul de timp curent. Mai multe detalii despre cum funcționează mecanismul de atenție pot fi văzute de aici Atenție
  2. Atenție bazată pe locație :- The main disadvantage of Content-based Location mechanisms is that there is an implicit assumption that the location information is embedded in the output of the encoder. Otherwise there is no way to differentiate between character outputs which are repeated from the decoder. For example consider a word Charmander, the character a is repeated twice in it and without location information the decoder won't be able to predict them as separate characters. To alleviate this the current character and it's alignment is predicted by using both the encoder output and previous alignment. More details onto how location based attend works can be seen aici.

Decodorul este un GRU multistrat unidirecțional. La fiecare pas de timp t primește intrare de la pasul de timp anterior și vectorul context de la modulul de atenție. Decodificarea multinomială și netezirea etichetelor sunt explorate la antrenament pentru a îmbunătăți capacitatea de generalizare.

Modele de transformatoare

Although encoder-decoder networks have been pretty good in achieving results for handwriting recognition they have a bottleneck in training due to the LSTM layers involved and hence can't be parallelized. Recently transformers have been pretty successful and replaced LSTM in solving various language related tasks. Let's discuss now how transformer based models can be applied for handwriting recognition.

Fiți atenți la ceea ce citiți

În această lucrare, autorii au propus utilizarea unei arhitecturi bazate pe transformator folosind straturi de auto-atenție cu mai multe capete, atât în ​​faza vizuală, cât și în cea a textului, și astfel pot învăța atât recunoașterea caracterelor, cât și dependențele legate de limbaj ale secvențelor de caractere care urmează să fie decodate. Deoarece cunoștințele de limbă sunt încorporate în modelul în sine, nu este nevoie de niciun pas suplimentar de post-procesare folosind un model de limbă și, prin urmare, are capacitatea de a prezice rezultate care nu fac parte din vocabular. Pentru a realiza această codificare a textului se întâmplă la nivel de caractere și nu la nivel de cuvânt. Deoarece arhitectura transformatorului permite antrenarea modelului în paralel pentru fiecare regiune sau caracter, procesul de antrenament este mult simplificat.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Arhitectura de rețea constă din următoarele componente

  1. Codificator vizual :- Pentru a extrage caracteristici relevante și pentru a aplica atenția vizuală cu mai multe capete pe diferite locații ale personajelor
  2. Transcriptor de text :- Îndeplinește sarcina de a prelua textul introdus, de a-l codifica, de a aplica atenția personală a limbajului cu mai multe capete și de a aplica atenție reciprocă atât asupra caracteristicilor vizuale, cât și asupra textului.
Codificator vizual

Resnet50 backbone is to used to extra the features as can be seen in the figure above. The 3 dimensional feature map output from Resnet50 Fc is passed to Temporal Encoding module which reshapes to 2d by keeping the same width and hence the shape of  (f x h, w). This is fed into a fully connected layer to reduce the shape to (f, w) and the resultant output is Fc'. In addition a positional encoding TE is added to Fc' to retain the position information as mentioned in Transformer paper by Vaswani. More info of how transformer architecture is designed can be seen aici. Ieșirea este trecută printr-un strat complet conectat pentru a obține harta caracteristică finală cu formă (f, w). Ieșirea finală este trecută printr-un modul de atenție cu mai multe capete cu 8 capete pentru a obține o hartă vizuală bogată a caracteristicilor

Transcriptor de text

Textul de intrare este trecut printr-un codificator care generează încorporare la nivel de caractere. Aceste înglobări sunt combinate cu locația temporală similară modului în Visual Encoder folosind un modul Temporal Encoder. Acest rezultat este apoi transmis unui modul de auto-atenție în limbaj cu mai multe capete, care este similar cu modulul de atenție din codificatorul vizual. Caracteristicile de text generate de-a lungul caracteristicilor vizuale din codificatorul vizual sunt transmise unui modul de atenție reciprocă a cărui sarcină este să alinieze și să combine caracteristicile învățate atât din imagini, cât și din intrările de text. Ieșirea este trecută printr-o funcție softmax pentru a obține rezultatul final.

La evaluarea datelor de testare, transcripțiile nu sunt disponibile. Astfel, doar simbolul de pornire < S > este transmis ca intrare și primul caracter prezis este transmis înapoi la sistem, care emite cel de-al doilea caracter prezis. Acest proces de inferență se repetă într-o buclă până când este produs simbolul de sfârșit al secvenței < E > sau când este atinsă lungimea maximă de ieșire N.

Generarea textului scris de mână

Handwriting Text Generation is the task of generating real looking handwritten text and thus can be used to augment the existing datasets. As we know deep learning requires a lot of data to train while obtaining huge corpus of labelled handwriting images for different languages is a cumbersome task. To solve this we can use Generative Adversarial Networks to generate training data. Let's discuss one such architecture here

ScrabbleGAN

ScrabbleGAN urmează o abordare semi-supravegheată pentru a sintetiza imagini text scrise de mână, care sunt versatile atât ca stil, cât și ca lexic. Are capacitatea de a genera imagini de lungimi diferite. Generatorul poate, de asemenea, să manipuleze stilul textului rezultat, ceea ce ne permite să decidem dacă textul trebuie să fie cursiv sau să spunem cât de gros/subțire ar trebui să fie cursa stiloului

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Arhitectura constă dintr-un generator complet convoluțional bazat pe BigGAN. Pentru fiecare caracter din intrare este ales un filtru corespunzător și toate valorile sunt concatenate împreună, care este apoi înmulțit cu un vector de zgomot z care controlează stilul textului generat. După cum se poate vedea mai sus, regiunile generate pentru fiecare caracter individual se suprapun, ajutând astfel la generarea de text recursiv conectat, precum și permițând flexibilitatea dimensiunilor diferitelor caractere. De exemplu, m ocupă o mare parte din spațiu, în timp ce e și t ocupă o zonă limitată. Pentru a păstra același stil pentru întregul cuvânt sau propoziție, vectorul de stil z este menținut constant pentru toate caracterele.

A convolutional discriminator based on BigGAN architecture is used to classify if the generate style of images is looking fake or real. The discriminator doesn't rely on character level annotations and hence is not based on a class conditional GAN. The advantage of this being there is no need for labelled data and hence data from unseen corpus which is not part of training data can be used for training discriminator. Along with the discriminator a text recognizer R is trained to classify if the text generated makes real world sense or if it's gibberish. The recognizer is based on CRNN architectures with the recurrent head removed to make the recognizer a little weaker and not recognize text even if it is unclear. The text generated in the output of R is compared with the input text given to generator and a corresponding penalty is added to loss function.

Ieșirile generate de ScrabbleGAN sunt prezentate mai jos

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Seturi de date:-

  1. IAM :- Setul de date IAM conține aproximativ 100 de imagini de cuvinte din limba engleză, cu cuvinte scrise de 657 de autori diferiți. Setul de tren, de testare și de validare conține cuvinte scrise de autori care se exclud reciproc. http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL :- Setul de date CVL constă din șapte documente scrise de mână scrise de aproximativ 310 de participanți, rezultând aproximativ 83 de decupări de cuvinte, împărțite în seturi de tren și de testareLink :- https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. JANTE :- Conține cuvinte din limba franceză de aproximativ 60 de imagini și scrise de 1300 de autori corespunzând la aproximativ 5 e-mailuri scrise de fiecare persoană.Link :- http://www.a2ialab.com/doku.php?id=rimes_database:start

Valori:-

Rata de eroare a caracterelor :- Este calculată ca distanța Levenshtein, care este suma substituirilor de caractere (Sc), inserărilor (Ic) și ștergerilor (Dc) care sunt necesare pentru a transforma un șir în celălalt, împărțită la numărul total de caractere din adevăr de bază (Nc)

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Rata de eroare a cuvintelor :- Se calculează ca suma substituirilor de cuvinte (Sw), inserărilor (Iw) și ștergerilor (Dw) care sunt necesare pentru a transforma un șir în celălalt, împărțită la numărul total de cuvinte din adevărul de bază (Nw)

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Antrenează-ți propriul model de recunoaștere a scrisului de mână

Now let's see how we can train our own handwritten text recognition model. We will be training on IAM dataset but you can train the model on your own dataset as well. Let's discuss the steps involved in setting this up

Date

Pentru a descărca registrul setului de date IAM din aici. Odată înregistrat, descărcați word.tgz de la aici. Acesta conține un set de date de imagini cu cuvinte scrise de mână. De asemenea, descărcați fișierul de adnotări words.txt de la aici.

Dacă doriți să utilizați propriul set de date, trebuie să urmați structura de date a setului de date IAM.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

The above shows how AIM dataset folder structure looks. Here a01, a02 etc. represent the parent folders each having sub-folders of data. Each sub-folder has a set of images having name of the folder added as a prefix to it's file name.

În plus, avem nevoie de un fișier de adnotare pentru a menționa căile către fișierele de imagini și transcripțiile corespunzătoare. Luați în considerare, de exemplu, imaginea de mai sus cu nominalizarea textului, cea de mai jos ar fi reprezentarea în fișierul de adnotare words.txt

a01-000u-01-00 ok 156 395 932 441 100 nominalizare VBG

  1. a01-000u-01-00 -> ID cuvânt pentru o linie în forma a01-000u
  2. ok/err -> Indicator de calitate a ieșirii segmentării
  3. 156 -> nivel de gri pentru a binariza linia care conține acest cuvânt
  4. 395 932 441 100 -> casetă de delimitare în jurul acestui cuvânt în format x,y,w,h
  5. VBG -> eticheta gramaticală pentru acest cuvânt. Aici este verbul gerunziv
  6. nominalizarea -> transcrierea pentru acest cuvânt

Arhitectura:-

Vom antrena o arhitectură bazată pe CRNN cu pierderi CTC. Un CNN este folosit pentru a extrage caracteristicile vizuale care sunt transmise unui RNN și o pierdere CTC este aplicată la sfârșit cu un decodor lacom pentru a obține rezultatul.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Pregătire

Vom folosi codul CRNN de la aici pentru a ne instrui modelul. Urmați pașii de mai jos pentru a pregăti datele

python checkDirs.py

Rulați comanda de mai sus și ar trebui să vedeți o ieșire ca mai jos

[OK] cuvinte/
[OK] cuvinte/a01/a01-000u/
[OK] word.txt
[OK] test.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Acum sunteți gata să începeți antrenamentul.

Accesați directorul rădăcină și executați

python main.py --train

REZULTATE

După antrenament pentru aproximativ 50 de epoci, rata de eroare a caracterelor (CER) este de 10.72%, în timp ce rata de eroare a cuvintelor (WER) este de 26.45% și, prin urmare, acuratețea cuvintelor este de 73.55%. Unele dintre predicții pot fi văzute în figura de mai jos.

Cum să faci cu ușurință Recunoașterea scrisului de mână folosind Machine Learning

Modelul este capabil să prezică personajele cu acuratețe într-o mare măsură, dar suferă în puține cazuri, cum ar fi îngrozitor este prezis la fel de nefericit, poveștile sunt prezise ca stări. Aceste probleme pot fi rezolvate prin utilizarea unui model de limbaj ca pas de post-procesare împreună cu decodorul care poate genera cuvinte semnificative și poate rectifica greșelile simple.

Rezumat

Deși au existat dezvoltări semnificative în tehnologie care ajută la o mai bună recunoaștere a textului scris de mână, HTR este o problemă departe de a fi rezolvată în comparație cu OCR și, prin urmare, nu este încă utilizat pe scară largă în industrie. Cu toate acestea, odată cu ritmul evoluției tehnologiei și odată cu introducerea modelelor precum transformatoarele, ne putem aștepta ca modelele HTR să devină un loc obișnuit în curând.

Pentru a prinde mai multe cercetări pe acest subiect, puteți începe aici

Lecturi suplimentare

Timestamp-ul:

Mai mult de la AI și învățarea automată