Hvordan enkelt gjøre håndskriftgjenkjenning ved hjelp av maskinlæring PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Vil du gjøre håndskrevet OCR? Denne bloggen er en omfattende oversikt over de nyeste metodene for håndskriftgjenkjenning ved hjelp av dyp læring. Vi har gjennomgått den siste forskningen og artikler og har også bygget en håndskriftleser fra bunnen av.


Nanonetter OCR API har mange interessante bruk saker. Snakk med en Nanonets AI-ekspert for å lære mer.


Introduksjon

Markedsstørrelsen for optisk tegngjenkjenning (OCR) forventes å være USD 13.38 milliarder innen 2025 med en år-til-år-vekst på 13.7 %. Denne veksten er drevet av rask digitalisering av forretningsprosesser som bruker OCR for å redusere arbeidskostnadene deres og spare dyrebare arbeidstimer. Selv om OCR har blitt ansett som et løst problem, er det én nøkkelkomponent i det, håndskriftgjenkjenning (håndskrifts-OCR) eller håndskrevet tekstgjenkjenning (HTR) som fortsatt anses som en utfordrende problemstilling. Den høye variasjonen i håndskriftstiler på tvers av mennesker og dårlig kvalitet på den håndskrevne teksten sammenlignet med trykt tekst utgjør betydelige hindringer for å konvertere den til maskinlesbar tekst. Ikke desto mindre er det et avgjørende problem å løse for flere bransjer som helsevesen, forsikring og bank.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring
Kilde: - https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Nylige fremskritt innen dyp læring, som fremveksten av transformatorarkitekturer, har raskt sporet vår fremgang med å knekke håndskrevet tekstgjenkjenning. Å gjenkjenne håndskrevet tekst kalles Intelligent Character Recognition (ICR) på grunn av at algoritmene som trengs for å løse ICR, trenger mye mer intelligens enn å løse generisk OCR.

I denne artikkelen vil vi lære om oppgaven med håndskrevet tekstgjenkjenning, dens forviklinger og hvordan vi kan løse den ved hjelp av dyplæringsteknikker.


Vil du hente ut data fra håndskrevne skjemaer? Gå over til Nanonetter og begynn å bygge håndskrift OCR-modeller gratis!


Utfordringer i håndskriftgjenkjenning

  1. Stor variasjon og tvetydighet i slag fra person til person
  2. Håndskriftstilstanden til en individuell person varierer også fra tid til annen og er inkonsekvent
  3. Dårlig kvalitet på kildedokumentet / bildet på grunn av forringelse over tid
  4. Tekst i trykte dokumenter sitter i en rett linje mens mennesker ikke trenger å skrive en tekstlinje i en rett linje på hvitt papir
  5. Kursiv håndskrift gjør separasjon og anerkjennelse av tegn utfordrende
  6. Tekst i håndskrift kan ha variabel rotasjon til høyre, i motsetning til utskrevet tekst der all teksten sitter rett opp
  7. Å samle inn et godt merket datasett for å lære er ikke billig sammenlignet med syntetiske data

Bruksmåter

Helsevesen og legemidler

Pasientresept digitalisering er et viktig smertepunkt i helsevesenet / farmasøytisk industri. Roche håndterer for eksempel millioner av petabytes med medisinske PDF-filer daglig. Et annet område der det er viktig å registrere håndskrevet tekst, er pasientregistrering og digitalisering av skjemaer. Ved å legge til håndskriftgjenkjenning i deres verktøy, kan sykehus / legemidler forbedre brukeropplevelsen betydelig

Forsikring

En stor forsikringsbransje mottar mer enn 20 millioner dokumenter om dagen, og en forsinkelse i behandlingen av kravet kan påvirke selskapet forferdelig. Kravdokumentet kan inneholde forskjellige håndskriftsstiler, og ren manuell automatisering av behandling av krav vil redusere rørledningen

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring
Kilde: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Banking

Folk skriver sjekker med jevne mellomrom, og sjekker spiller fortsatt en viktig rolle i de fleste ikke-kontante transaksjoner. I mange utviklingsland krever den nåværende sjekkbehandlingsprosedyren at en bankmedarbeider leser og manuelt legger inn informasjonen som er til stede på en sjekk, og også verifiserer oppføringene som signatur og dato. Ettersom det må behandles et stort antall sjekker hver dag i en bank, kan et håndskriftstekstgjenkjenningssystem spare kostnader og timer med menneskelig arbeid

Nettbiblioteker

Enorme mengder historisk kunnskap digitaliseres ved å laste opp bildeskanene for tilgang til hele verden. Men denne innsatsen er ikke veldig nyttig før teksten i bildene kan identifiseres som kan indekseres, spørres og blades. Håndskriftgjenkjenning spiller en nøkkelrolle for å få liv i middelalderens dokumenter, postkort, forskningsstudier etc.

Metoder

Metoder for anerkjennelse av håndskrift kan i stor grad klassifiseres i de to nedenstående typene

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring
  1. Online metoder : - Online metoder involverer en digital penn / penn og har tilgang til informasjon om strek, penneplassering mens tekst skrives som sett i høyre figur ovenfor. Siden de pleier å ha mye informasjon om strømmen av tekst som skrives, kan de klassifiseres med ganske høy nøyaktighet, og avgrensningen mellom forskjellige tegn i teksten blir mye mer tydelig
  2. Frakoblede metoder :- Frakoblede metoder involverer å gjenkjenne tekst når den er skrevet ned og vil derfor ikke ha informasjon om strekene/retningene som er involvert under skriving med en mulig tillegg av litt bakgrunnsstøy fra kilden, dvs. papir.

I den virkelige verden er det ikke alltid mulig/skalerbart å bære en digital penn med sensorer for å fange opp strekinformasjon, og derfor er oppgaven med å gjenkjenne tekst offline et mye mer relevant problem. Derfor vil vi nå diskutere ulike teknikker for å løse problemet med å gjenkjenne offline tekst.

Teknikker

De første tilnærmingene for å løse håndskriftgjenkjenning involverte maskinlæringsmetoder som Hidden Markov Models(HMM), SVM osv. Når den første teksten er forhåndsbehandlet, utføres funksjonsekstraksjon for å identifisere nøkkelinformasjon som løkker, bøyningspunkter, sideforhold osv. av individuell karakter. Disse genererte funksjonene blir nå matet til en klassifikator, si HMM, for å få resultatene. Ytelsen til maskinlæringsmodeller er ganske begrenset på grunn av manuell funksjonsutvinningsfase og deres begrensede læringskapasitet. Funksjonsutvinningstrinn varierer for hvert enkelt språk og er derfor ikke skalerbar. Med bruken av dyp læring kom enorme forbedringer i nøyaktigheten av håndskriftgjenkjenning. La oss diskutere noen av den fremtredende forskningen innen dyp læring for håndskriftgjenkjenning

Flerdimensjonale tilbakevendende nevrale nettverk

RNN/LSTM kan som vi vet håndtere sekvensielle data for å identifisere tidsmønstre og generere resultater. Men de er begrenset til å håndtere 1D-data og vil derfor ikke være direkte gjeldende for bildedata. For å løse dette problemet foreslo forfatterne i denne artikkelen en flerdimensjonal RNN/LSTM-struktur som kan sees i figuren nedenfor

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Følgende er forskjellen mellom en generell RNN og en flerdimensjonal RNN. I et generelt RNN sier skjult lag at jeg mottar tilstand fra et tidligere skjult lag i tid i-1. I flerdimensjonalt RNN si for eksempel en 2-dimensjonal RNN, det skjulte laget (i, j) mottar tilstander fra flere tidligere skjulte lag dvs. (i-1, j) og (i, j-1) og fanger dermed sammenheng fra begge høyde og bredde i et bilde som er sentralt for å få en klar forståelse av den lokale regionen av et nettverk. Dette utvides ytterligere for å få informasjon ikke bare fra tidligere lag, men også fra fremtidige lag som ligner på hvordan en BI-LSTM mottar informasjon fra t-1 og t + 1. På samme måte kan et 2D MDRNN skjult lag jeg nå motta informasjon (i-1, j), (i, j-1), (i + 1, j), (i, j + 1) og dermed fange sammenheng i alle retninger

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Hele nettverksstrukturen er vist ovenfor. MDLSTM brukes som ikke er annet enn å erstatte RNN-blokk med en LSTM-blokk fra diskusjonen ovenfor om MDRNN. Inngangen er delt inn i blokker av størrelse 3 × 4 som nå mates inn i MDSTM-lag. Nettverket har en hierarkisk struktur av MDLSTM-lag etterfulgt av feed-forward (ANN) lag i tandem. Deretter konverteres den endelige utgangen til en 1D-vektor og gis til CTC-funksjonen for å generere utdata

Connectionist Temporal Classification (CTC) er en algoritme som brukes til å håndtere oppgaver som talegjenkjenning, håndskriftgjenkjenning osv. der bare inngangsdata og utgangstranskripsjon er tilgjengelig, men det er ingen justeringsdetaljer gitt, dvs. hvordan en bestemt region i lyd for tale eller bestemt region i bilder for håndskrift er justert til et bestemt tegn. Enkle heuristikk som å gi hver karakter samme område vil ikke fungere siden hvor mye plass hver karakter tar varierer i håndskrift fra person til person og fra tid til annen.

For brukstilstanden vår for håndskriftgjenkjenning, vurder inngangsbildeområdene for en bestemt setning som inngang X=[x1,x2,…,x ** T] mens forventet produksjon som Y=[y1,y2,…,y ** U] . Gitt X er det meningen at vi skal finne nøyaktig Y. CTC-algoritmen fungerer ved å ta input X og gi fordeling over alle mulige Y-er som vi kan lage en prediksjon for endelig utgang.

CTC bruker et basiskarakter - for å skille mellom dupliserte tegn og gjentatte tegn i en inndataregion. For eksempel kan et bestemt tegn spenne over flere inndataområder, og dermed vil CTC sende ut det samme tegnet fortløpende. Eksempel: - Input james og output av CTC er jjaammmees. Den endelige utgangen er utledet ved å kollapse de gjentatte utgangene og dermed får vi james. Men nå for å presentere dupliserte tegn si 'l' i hallo, må vi ha en separasjon på plass og dermed er alle utdata atskilt med bindestrek(-). Nå kan utgangen for hello være h-ee-ll-lll-oo som hvis den kollapser vil bli hallo og ikke helo. Mer informasjon om hvordan CTC fungerer kan du se her CTC.

Mens vi dekoder utdataene fra CTC basert på den enkle heuristikken med høyeste sannsynlighet for hver posisjon, kan vi få resultater som kanskje ikke gir noen mening i den virkelige verden. For å løse dette kan vi bruke en annen dekoder for å forbedre resultatene. La oss diskutere ulike typer dekodinger

  1. Best-path dekoding : - Dette er den generiske avkodingen vi har diskutert så langt. Ved hver posisjon tar vi utdataene fra modellen og finner resultatet med størst sannsynlighet.
  2. Dekoding av strålesøk : - I stedet for å ta en enkelt utgang fra nettverket hver gang bjelkesøk antyder å holde flere utgangsbaner med høyest sannsynlighet og utvide kjeden med nye utganger og slippbaner som har mindre sannsynlighet for å holde strålestørrelsen konstant. Resultatene oppnådd gjennom denne tilnærmingen er mer nøyaktige enn å bruke den grådige tilnærmingen
  3. Strålesøk med språkmodell :- Strålesøk gir mer nøyaktige resultater enn rutenettsøk, men det løser likevel ikke problemet med å ha meningsfulle resultater. For å løse dette kan vi bruke en språkmodell sammen med strålesøk ved å bruke både sannsynligheter fra modellen og språkmodellen for å generere endelige resultater.

Flere detaljer i generering av nøyaktige avkodingsresultater kan sees på i dette Artikkel

Koder-dekoder og oppmerksomhetsnettverk

Seq2Seq-modeller med koder-dekoder-nettverk har nylig vært populære for å løse oppgavene med talegjenkjenning, maskinoversettelse osv., og har derfor blitt utvidet til å løse brukssaken til håndskriftgjenkjenning ved å implementere en ekstra oppmerksomhetsmekanisme. La oss diskutere noen banebrytende forskning på dette området

Skann, delta og les

I dette sentrale verket Scan, Attend and Read (SAR) foreslår forfatterne bruk av en oppmerksomhetsbasert modell for end-to-end håndskriftgjenkjenning. Forskningens viktigste bidrag er automatisk transkripsjon av tekst uten å segmentere i linjer som et forbehandlingstrinn, og kan dermed skanne en hel side og gi resultater.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

SAR bruker MDLSTM-basert arkitektur som ligner på den vi diskuterte ovenfor med en liten endring i det endelige laget. Etter det siste lineære laget, dvs. den endelige Sum-blokken i figuren ovenfor, kollapses funksjonskartene i den vertikale dimensjonen, og en endelig softmax-funksjon brukes for å få utgangene.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

SAR-arkitektur består av en MDLSTM-arkitektur som fungerer som funksjonsavtrekkeren. Den siste kollapsende modulen med softmax-utgang og CTC-tap erstattes av en oppmerksomhetsmodul og en LSTM-dekoder. Oppmerksomhetsmodellen som brukes er en hybrid kombinasjon av innholdsbasert oppmerksomhet og lokasjonsbasert oppmerksomhet, som blir forklart mer detaljert i neste papir. Dekoderen LSTM-moduler tar forrige tilstand, forrige oppmerksomhetskart og koderfunksjonene for å generere det endelige utgangskarakter og tilstandsvektoren for neste prediksjon.

Konvertere, delta og stave

Denne artikkelen foreslår en oppmerksomhetsbasert sekvens-til-sekvens-modell for håndskrevet ordgjenkjenning. Den foreslåtte arkitekturen har tre hoveddeler: en koder, bestående av en CNN og en toveis GRU, en oppmerksomhetsmekanisme viet til å fokusere på de aktuelle funksjonene og en dekoder dannet av en retningsbestemt GRU, i stand til å stave det tilsvarende ordet, karakter for karakter.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Koderen bruker en CNN for å trekke ut visuelle funksjoner. En ferdigtrent VGG-19-BN-arkitektur brukes som funksjonsuttrekk. Inndatabildet konverteres til funksjonskart X som deretter omformes til X' ved å dele alle kanaler kolonnevis og kombinere dem for å få sekvensiell informasjon. X' konverteres videre til H ved å bruke en toveis GRU. GRU er et nevralt nettverk som ligner på LSTM i naturen og kan fange opp tidsinformasjon.

Videre benyttes en oppmerksomhetsmodell mens man forutsier utdata fra dekoderen. Oppgaven diskuterer to forskjellige typer oppmerksomhetsmekanismer som er utforsket.

  1. Innholdsbasert oppmerksomhet : - Ideen bak dette er å finne likheten mellom den nåværende skjulte tilstanden til dekoderen og funksjonskartet fra koderen. Vi finner de mest korrelerte funksjonsvektorene i funksjonskartet til koderen, som kan brukes til å forutsi gjeldende karakter på det nåværende tidspunktet. Flere detaljer om hvordan oppmerksomhetsmekanismen fungerer kan sees herfra Oppmerksomhet
  2. Stedsbasert oppmerksomhet :- Den største ulempen med innholdsbaserte lokaliseringsmekanismer er at det er en implisitt antakelse om at lokaliseringsinformasjonen er innebygd i utgangen til koderen. Ellers er det ingen måte å skille mellom tegnutdata som gjentas fra dekoderen. Tenk for eksempel på et ord Charmander, tegnet a gjentas to ganger i det, og uten plasseringsinformasjon vil ikke dekoderen kunne forutsi dem som separate tegn. For å lindre dette blir gjeldende karakter og dets justering forutsagt ved å bruke både koderutgangen og tidligere justering. Du kan se flere detaljer om hvordan stedsbasert deltakelse fungerer her..

Dekoderen er en en-retningsbestemt flerlags GRU. Ved hvert tidstrinn t mottar den innspill fra forrige tidstrinn og kontekstvektoren fra oppmerksomhetsmodulen. Multinomial dekoding og etikettutjevning blir utforsket under trening for å forbedre generaliseringsevnen.

Transformermodeller

Selv om koder-dekoder-nettverk har vært ganske gode til å oppnå resultater for håndskriftgjenkjenning, har de en flaskehals i trening på grunn av LSTM-lagene som er involvert, og kan derfor ikke parallelliseres. Nylig har transformatorer vært ganske vellykkede og erstattet LSTM i å løse ulike språkrelaterte oppgaver. La oss diskutere nå hvordan transformatorbaserte modeller kan brukes for håndskriftsgjenkjenning.

Vær oppmerksom på det du leser

I dette arbeidet foreslo forfatterne bruk av en transformatorbasert arkitektur ved hjelp av flerhodede oppmerksomhetslag på både visuelle og tekstfaser og kan dermed lære både tegngjenkjenning så vel som språkrelaterte avhengigheter av tegnsekvensene som skal dekodes. Siden språkkunnskapen er innebygd i selve modellen, er det ikke behov for noe ekstra etterbehandlingstrinn ved bruk av en språkmodell, og har dermed evnen til å forutsi utdata som ikke er en del av ordforrådet. For å oppnå denne tekstkodingen skjer på tegnnivå og ikke ordnivå. Ettersom transformatorarkitekturen tillater å trene modellen parallelt for hver region eller karakter, er treningsprosessen mye forenklet.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Nettverksarkitekturen består av følgende komponenter

  1. Visuell koder : - Å hente ut relevante funksjoner og bruke visuell selvoppmerksomhet med flere hoder på forskjellige karakterplasser
  2. Tekstutskrift : - Det gjør oppgaven med å ta tekstinndata, kode det, bruke flerspråklig selvoppmerksomhet og bruke gjensidig oppmerksomhet på både visuelle og tekstfunksjoner.
Visuell koder

Resnet50-ryggraden brukes til å ekstra funksjonene som kan sees i figuren ovenfor. Det 3-dimensjonale funksjonskartet fra Resnet50 Fc sendes til Temporal Encoding-modulen som omformes til 2d ved å beholde den samme bredden og dermed formen på (fxh, w). Dette mates inn i et fullt koblet lag for å redusere formen til (f, w) og den resulterende utgangen er Fc'. I tillegg legges en posisjonskoding TE til Fc' for å beholde posisjonsinformasjonen som nevnt i Transformer paper av Vaswani. Mer info om hvordan transformatorarkitektur er utformet kan sees her.. Utgangen føres gjennom et fullt koblet lag for å få det endelige funksjonskartet med form (f, w). Den endelige utgangen sendes gjennom en flerhodet oppmerksomhetsmodul med 8 hoder for å få visuelt rikt funksjonskart

Tekstutskrift

Inngangsteksten sendes gjennom en koder som genererer innebygde tegnnivåer. Disse innebyggingene kombineres med tidsmessig plassering som ligner på måten i Visual Encoder ved hjelp av en Temporal Encoder-modul. Dette resultatet blir deretter sendt til en Multi-Head Language Self-Attention-modul som ligner på oppmerksomhetsmodulen i Visual encoder. Tekstfunksjonene generert langs de visuelle funksjonene fra den visuelle koderen blir sendt til en modul for gjensidig oppmerksomhet hvis oppgave er å justere og kombinere de lærte funksjonene fra både bilder og tekstinngangene. Utgangen sendes gjennom en softmax-funksjon for å få det endelige resultatet.

Ved evaluering på testdata er transkripsjonene ikke tilgjengelige. Dermed blir bare starttegnet <S> overført som inngang, og det første forutsagte tegnet blir matet tilbake til systemet, som sender ut det andre forutsagte tegnet. Denne slutningsprosessen gjentas i en sløyfe til slutten av sekvenssymbolet <E> produseres eller når den maksimale utgangslengden N er nådd.

Generering av håndskriftstekst

Handwriting Text Generation er oppgaven med å generere ekte håndskrevet tekst og kan derfor brukes til å utvide eksisterende datasett. Som vi vet krever dyp læring mye data å trene, mens det er en tung oppgave å skaffe et stort korpus av merkede håndskriftsbilder for forskjellige språk. For å løse dette kan vi bruke Generative Adversarial Networks til å generere treningsdata. La oss diskutere en slik arkitektur her

ScrabbleGAN

ScrabbleGAN følger en semi-overvåket tilnærming for å syntetisere håndskrevne tekstbilder som er allsidige både i stil og leksikon. Den har evnen til å generere bilder av ulik lengde. Generatoren kan også manipulere den resulterende tekststilen som lar oss bestemme om teksten må være kursiv eller si hvor tykk / tynn skal være pennestrøk

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Arkitekturen består av en fullstendig konvolusjonsgenerator basert på BigGAN. For hvert tegn i inngangen velges et tilsvarende filter og alle verdiene blir sammenkoblet, som deretter multipliseres med en støyvektor z som styrer den genererte tekststilen. Som det kan sees ovenfor, overlapper regionene som genereres for hvert enkelt tegn, og hjelper med å generere tilkoblet rekursiv tekst, i tillegg til å tillate fleksibiliteten til forskjellige tegnstørrelser. For eksempel tar m mye av plassen mens e og t tar et begrenset område. For å beholde den samme stilen for hele ordet eller setningen, holdes stilvektoren z konstant for alle tegn.

En konvolusjonsdiskriminator basert på BigGAN-arkitektur brukes til å klassifisere om den genererte stilen til bilder ser falsk eller ekte ut. Diskriminatoren er ikke avhengig av merknader på karakternivå og er derfor ikke basert på en klassebetinget GAN. Fordelen med dette er at det ikke er behov for merkede data, og derfor kan data fra usett korpus som ikke er en del av treningsdata brukes til å trene diskriminator. Sammen med diskriminatoren er en tekstgjenkjenner R opplært til å klassifisere om teksten som genereres gir mening fra den virkelige verden eller om den er vrøvl. Gjenkjenneren er basert på CRNN-arkitekturer med det tilbakevendende hodet fjernet for å gjøre gjenkjenneren litt svakere og ikke gjenkjenne tekst selv om den er uklar. Teksten som genereres i utgangen til R sammenlignes med inngangsteksten gitt til generatoren og en tilsvarende straff legges til tapsfunksjonen.

Resultatene generert av ScrabbleGAN er vist nedenfor

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Datasett: -

  1. IAM : - IAM-datasettet inneholder omtrent 100 657 bilder av ord fra de engelske språkene med ord skrevet av XNUMX forskjellige forfattere. Tog-, test- og valideringssettet inneholder ord skrevet av gjensidig eksklusive forfattereLink: - http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - CVL-datasettet består av syv håndskrevne dokumenter skrevet av ca 310 deltakere, noe som resulterer i ca 83 XNUMX ordavlinger, delt inn i tog- og testsett Link: - https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. RIMER : - Inneholder ord fra det franske språket på ca 60 1300 bilder og skrevet av 5 forfattere som tilsvarer omtrent XNUMX e-poster skrevet av hver person. Link: - http://www.a2ialab.com/doku.php?id=rimes_database:start

Beregninger: -

Tegnfeilrate : - Det beregnes som Levenshtein-avstanden som er summen av tegnsubstitusjoner (Sc), innsettinger (Ic) og slettinger (Dc) som er nødvendige for å transformere en streng til den andre, delt på totalt antall tegn i groundtruth (Nc)

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Ordfeilrate : - Det beregnes som summen av ordbyttene (Sw), innsettinger (Iw) og slettinger (Dw) som kreves for å transformere en streng til den andre, delt på totalt antall ord i bakkesannheten (Nw)

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Tren din egen håndgjenkjenningsmodell

La oss nå se hvordan vi kan trene opp vår egen håndskrevne tekstgjenkjenningsmodell. Vi vil trene på IAM-datasettet, men du kan også trene modellen på ditt eget datasett. La oss diskutere trinnene som er involvert i å sette opp dette

Data

For å laste ned IAM datasettregister fra her.. En gang registrert, last ned words.tgz fra her.. Dette inneholder et datasett med håndskrevne ordbilder. Last ned også merknadsfilen words.txt fra her..

Hvis du vil bruke ditt eget datasett, må du følge datastruktureringen av IAM-datasettet.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Ovenstående viser hvordan AIM-datasettmappestrukturen ser ut. Her representerer a01, a02 osv. overordnede mapper som hver har undermapper med data. Hver undermappe har et sett med bilder med navnet på mappen lagt til som et prefiks til filnavnet.

I tillegg trenger vi en merknadsfil for å nevne banene til bildefilene og de tilsvarende transkripsjonene. Tenk for eksempel på bildet ovenfor med tekst som nominerer, nedenfor vil være representasjonen i kommentarfilen words.txt

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

  1. a01-000u-01-00 -> ord-id for en linje i form a01-000u
  2. ok / err -> Indikator for kvaliteten på segmenteringsutdata
  3. 156 -> grått nivå for å binere linjen som inneholder dette ordet
  4. 395 932 441 100 -> avgrensningsboks rundt dette ordet i x, y, w, h format
  5. VBG -> den grammatiske etiketten for dette ordet. Her er det Verb Gerund
  6. nominere -> transkripsjonen for dette ordet

Arkitektur: -

Vi skal trene en CRNN-basert arkitektur med CTC-tap. En CNN brukes til å trekke ut de visuelle funksjonene som sendes til en RNN, og et CTC-tap blir brukt til slutt med en grådig dekoder for å få utdata.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Kurs

Vi skal bruke CRNN-koden fra her. å trene modellen vår. Følg trinnene nedenfor for å forberede dataene

python checkDirs.py

Kjør over kommandoen, og du bør se en utgang som nedenfor

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

Nå er du klar til å begynne å trene.

Gå til rotkatalogen og kjør

python main.py --train

Resultater

Etter trening i omtrent 50 perioder er tegnfeilfrekvensen (CER) 10.72% mens ordfeilfrekvensen (WER) er 26.45%, og dermed er ordnøyaktigheten 73.55%. Noen av spådommene kan sees i figuren nedenfor.

Slik gjør du enkelt håndskriftgjenkjenning ved hjelp av maskinlæring

Modellen er i stand til å forutsi karakterene nøyaktig i stor grad, men det lider i få tilfeller som forferdelig blir spådd som anfully, historier blir spådd som staries. Disse problemene kan løses ved å bruke en språkmodell som et etterbehandlingstrinn sammen med dekoderen som kan generere meningsfulle ord og rette enkle feil.

Oppsummering

Selv om det har vært betydelig utvikling i teknologi som hjelper til bedre gjenkjenning av håndskrevet tekst, er HTR langt fra et løst problem sammenlignet med OCR, og er derfor ennå ikke mye brukt i industrien. Likevel, med tempoet i teknologiutviklingen og med introduksjonen av modeller som transformatorer, kan vi forvente at HTR-modeller snart blir vanlig.

For å få mer forskning på dette emnet kan du komme i gang med her.

Videre Reading

Tidstempel:

Mer fra AI og maskinlæring