Hogyan készíthet egyszerűen kézírás-felismerést a Machine Learning PlatoBlockchain adatintelligencia segítségével. Függőleges keresés. Ai.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Kézírásos OCR-t szeretne csinálni? Ez a blog átfogó áttekintést nyújt a kézírás-felismerés legújabb módszereiről a mély tanulással. Áttekintettük a legfrissebb kutatásokat és közleményeket, és a semmiből építettünk fel egy kézírás-olvasót.


Nanonetek OCR API sok érdekességgel rendelkezik használati esetek. További információért beszéljen egy Nanonets AI-szakértővel.


Bevezetés

Az Optical Character Recognition (OCR) piac mérete 13.38-re várhatóan 2025 milliárd USD lesz, éves szinten 13.7%-os növekedéssel. Ez a növekedés az üzleti folyamatok gyors digitalizálásának köszönhető, amely az OCR segítségével csökkenti a munkaerőköltségeket és megtakarítja az értékes munkaórákat. Bár az OCR-t megoldott problémának tekintik, van egy kulcsfontosságú összetevője, a kézírás-felismerés (Kézírás OCR) vagy a Kézírásos szövegfelismerés (HTR), amely még mindig kihívást jelentő problémameghatározásnak számít. A kézírási stílusok nagy eltérése az emberek között és a kézzel írott szöveg rossz minősége a nyomtatott szöveghez képest jelentős akadályokat jelent a gépi olvasható szöveggé alakításban. Mindazonáltal ez számos iparág számára kulcsfontosságú megoldandó probléma, mint például az egészségügy, a biztosítás és a bankszektor.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással
Forrás :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

A Deep Learning legújabb fejlesztései, mint például a transzformátor-architektúrák megjelenése, felgyorsították a kézírásos szövegfelismerés feltörésével kapcsolatos fejlődésünket. A kézzel írt szöveg felismerését intelligens karakterfelismerésnek (ICR) nevezik, mivel az ICR megoldásához szükséges algoritmusokhoz sokkal több intelligencia szükséges, mint az általános OCR megoldásához.

Ebben a cikkben megismerkedünk a kézírásos szövegfelismerés feladatával, annak bonyolultságával és a mélytanulási technikák segítségével történő megoldásával.


Szeretne adatokat kinyerni a kézzel írt űrlapokból? Irány oda Nanonetek és kezdje el ingyenesen a kézírásos OCR modellek építését!


A kézírás-felismerés kihívásai

  1. Az agyvérzések hatalmas változatossága és kétértelműsége személyenként
  2. Az egyes személyek kézírási stílusa is időről időre változik, és következetlen
  3. A forrásdokumentum/kép gyenge minősége az idő múlásával járó romlás miatt
  4. A nyomtatott dokumentumok szövege egyenes vonalban helyezkedik el, míg az embereknek nem kell egy sort egyenes vonalban írni fehér papírra
  5. A kurzív kézírás megnehezíti a karakterek elkülönítését és felismerését
  6. A kézírásos szöveg változó jobbra forgatható, ami ellentétben áll a nyomtatott szöveggel, ahol az összes szöveg egyenesen áll
  7. Egy jó címkézett adatkészlet összegyűjtése a tanuláshoz nem olcsó a szintetikus adatokhoz képest

Használati esetek

Egészségügy és gyógyszeripar

A betegek receptjeinek digitalizálása az egészségügy/gyógyszeripar egyik fő fájdalmas pontja. Például a Roche naponta több millió petabájtnyi orvosi PDF-et kezel. Egy másik terület, ahol a kézzel írt szövegészlelés kulcsfontosságú hatással bír, a betegek felvétele és az űrlapok digitalizálása. A kézírás-felismerés hozzáadásával a szolgáltatások eszköztárához a kórházak/gyógyszergyárak jelentősen javíthatják a felhasználói élményt

Biztosítás

Egy nagy biztosítási ágazat több mint 20 millió dokumentumot kap naponta, és a kárigény feldolgozásának késése borzasztóan érintheti a társaságot. A követelések dokumentuma különféle kézírási stílusokat tartalmazhat, és a követelések feldolgozásának pusztán kézi automatizálása teljesen lelassítja a folyamatot.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással
Forrás:- https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Banking

Az emberek rendszeresen írnak csekket, és a csekkek még mindig nagy szerepet játszanak a legtöbb nem készpénzes tranzakcióban. Sok fejlődő országban a jelenlegi csekkfeldolgozási eljárás megköveteli, hogy a banki alkalmazott elolvassa és kézzel írja be a csekken található információkat, valamint ellenőrizze a bejegyzéseket, például az aláírást és a dátumot. Mivel naponta nagyszámú csekket kell feldolgozni egy bankban, a kézírás-felismerő rendszer költséget és emberi munkaórákat takaríthat meg

Online könyvtárak

Hatalmas történelmi ismereteket digitalizálnak a képbeolvasások feltöltésével, hogy az egész világhoz hozzáférhessenek. De ez az erőfeszítés nem túl hasznos, amíg a képek szövege nem azonosítható, amely indexelhető, lekérdezhető és böngészhető. A kézírás-felismerés kulcsszerepet játszik a középkori és 20. századi dokumentumok, képeslapok, kutatási tanulmányok stb. életre keltésében.

Mód

Kézírás-felismerési módszerek nagyjából az alábbi két típusba sorolhatók

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással
  1. Online módszerek :- Az online módszerek digitális tollat/ceruzát foglalnak magukban, és hozzáférnek a vonásinformációkhoz, a toll helyéhez, miközben a szöveg íródik, ahogy az a fenti jobb oldali ábrán látható. Mivel általában sok információval rendelkeznek az írott szöveg áramlását illetően, meglehetősen nagy pontossággal osztályozhatók, és a szövegben a különböző karakterek közötti határvonal sokkal egyértelműbbé válik.
  2. Offline módszerek :- Az offline módszerek magukban foglalják a szöveg felismerését, miután azt leírták, és így nem lesz információjuk az írás során érintett vonásokról/irányokról, és a forrásból, azaz a papírból származó háttérzaj is előfordulhat.

A való világban nem mindig lehetséges/méretezhető, hogy digitális tollat ​​hordjunk érzékelőkkel a vonásinformációk rögzítésére, ezért az offline szövegfelismerés sokkal relevánsabb probléma. Így most különböző technikákat tárgyalunk az offline szöveg felismerésének problémájának megoldására.

Technikák

A kézírás-felismerés megoldásának kezdeti megközelítései olyan gépi tanulási módszereket tartalmaztak, mint például a rejtett Markov-modellek (HMM), az SVM stb. A kezdeti szöveg előfeldolgozása után a funkciók kivonása megtörténik a kulcsfontosságú információk, például hurkok, inflexiós pontok, képarány stb. azonosítása érdekében. egyéni jellegű. Ezeket a generált funkciókat most egy osztályozóba, mondjuk a HMM-be táplálják, hogy megkapják az eredményeket. A gépi tanulási modellek teljesítménye meglehetősen korlátozott a funkciók kézi kinyerési fázisa és korlátozott tanulási kapacitása miatt. A szolgáltatáskivonási lépés minden egyes nyelv esetében eltérő, ezért nem méretezhető. A mély tanulás megjelenésével óriási fejlődés következett be a kézírás-felismerés pontosságában. Vizsgáljuk meg néhány kiemelkedő kutatást a kézírás-felismerés mélytanulása területén

Többdimenziós visszatérő neurális hálózatok

Az RNN/LSTM, mint tudjuk, képes kezelni a szekvenciális adatokat, hogy azonosítsa az időbeli mintákat és eredményeket generáljon. De ezek az 1D adatok kezelésére korlátozódnak, ezért nem lesznek közvetlenül alkalmazhatók képadatokra. A probléma megoldására a cikk szerzői egy többdimenziós RNN/LSTM struktúrát javasoltak, amint az az alábbi ábrán látható.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Az alábbiakban bemutatjuk a különbséget az általános RNN és ​​a többdimenziós RNN között. Egy általános RNN-ben a rejtett réteg azt mondja, hogy i állapotot kap egy előző rejtett rétegtől az i-1 időben. A többdimenziós RNN-ben, mondjuk egy 2 dimenziós RNN-t, a rejtett réteg (i, j) több korábbi rejtett réteg állapotát kapja, pl. (i-1, j) és (i, j-1), és így mindkettőből rögzíti a kontextust. magasság és szélesség egy képen, amely kulcsfontosságú a helyi régió hálózat általi világos megértéséhez. Ezt tovább bővítik, hogy ne csak az előző rétegekből kapjanak információkat, hanem a jövőbeli rétegekből is, hasonlóan ahhoz, ahogyan a BI-LSTM információkat kap a t-1-től és a t+1-től. Hasonlóképpen egy 2D MDRNN rejtett réteg i immár képes információkat (i-1, j), (i, j-1), (i+1, j), (i, j+1) fogadni, így minden irányban rögzíti a kontextust.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A teljes hálózati struktúra fent látható. Az MDLSTM-et használják, ami nem más, mint az RNN blokk lecserélése egy LSTM blokkra az MDRNN fenti tárgyalásából. A bemenet 3×4 méretű blokkokra van osztva, amelyek most MDSTM rétegekbe kerülnek. A hálózat hierarchikus struktúrája MDLSTM rétegekből áll, amelyeket egymás után előrecsatolt (ANN) rétegek követnek. Ezután a végső kimenetet 1D vektorrá alakítják, és a CTC funkcióhoz adják a kimenet létrehozásához

Konnekcionista időbeli osztályozás (CTC) egy olyan algoritmus, amelyet olyan feladatok kezelésére használnak, mint a beszédfelismerés, a kézírás-felismerés stb., ahol csak a bemeneti adatok és a kimeneti átírás érhető el, de nincsenek megadva az igazítási részletek, pl. hogy egy adott régió a hangban a beszédben vagy egy adott régió a képekben kézíráshoz egy adott karakterhez igazodik. Az olyan egyszerű heurisztika, mint például, hogy minden karakternek ugyanazt a területet adja meg, nem működik, mivel az egyes karakterek által elfoglalt hely kézírásában személyenként és időről időre változik.

Kézírás-felismerési esetünkhöz tekintse bemenetnek az adott mondat bemeneti képterületeit X=[x1,x2,…,x**T] míg a várható kimenet as Y=[y1,y2,…,y**U] . Adott X-nek meg kell találnunk a pontos Y-t. A CTC algoritmus úgy működik, hogy X bemenetet vesz, és eloszlást ad az összes lehetséges Y-re, aminek segítségével előrejelzést tudunk adni a végső kimenetre.

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.

Miközben a CTC kimenetét dekódoljuk az egyes pozíciókra vonatkozó legnagyobb valószínűség egyszerű heurisztikája alapján, olyan eredményeket kaphatunk, amelyeknek a való világban nincs értelme. Ennek megoldására egy másik dekódert alkalmazhatunk az eredmények javítása érdekében. Beszéljük meg a dekódolás különböző típusait

  1. A legjobb útvonal dekódolása :- Ez az általános dekódolás, amelyet eddig tárgyaltunk. Minden pozícióban vesszük a modell kimenetét, és megtaláljuk a legnagyobb valószínűségű eredményt.
  2. Nyalábkeresés dekódolás :- Ahelyett, hogy a sugárkeresés minden alkalommal egyetlen kimenetet venne ki a hálózatból, több kimeneti útvonal megtartását javasolja a legnagyobb valószínűséggel, és bővítse ki a láncot új kimenetekkel és kisebb valószínűségű eldobási útvonalakkal, hogy a nyaláb mérete állandó maradjon. Az ezzel a megközelítéssel kapott eredmények pontosabbak, mint a mohó megközelítés alkalmazásakor
  3. Nyalábkeresés nyelvi modellel :- A sugárkeresés pontosabb eredményeket biztosít, mint a rácskeresés, de mégsem oldja meg az értelmes találatok problémáját. Ennek megoldására használhatunk nyelvi modellt és nyalábkeresést, amely mind a modellből, mind a nyelvi modellből származó valószínűségeket használja a végső eredmények előállításához.

A pontos dekódolási eredmények generálásával kapcsolatos további részletek megtekinthetők ebben cikkben

Kódoló-dekódoló és Figyelem hálózatok

A kódoló-dekódoló hálózatokkal rendelkező Seq2Seq modellek a közelmúltban népszerűek a beszédfelismerés, gépi fordítás stb. feladatok megoldásában, és így egy további figyelemmechanizmus bevezetésével kiterjesztették a kézírás-felismerés használati eseteinek megoldására is. Beszéljünk néhány alapvető kutatásról ezen a területen

Beolvasás, részvétel és olvasás

Ebben az alapvető munkában, a Scan, Attend and Read (SAR) című munkában a szerzők figyelmen alapuló modell használatát javasolják a kézírás-felismerés végpontjaiig. A kutatás fő hozzájárulása a szöveg automatikus átírása, anélkül, hogy előfeldolgozási lépésként sorokra szegmentálna, és így egy teljes oldalt be lehet szkennelni és eredményt lehet adni.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A SAR a fentebb tárgyalthoz hasonló MDLSTM alapú architektúrát használ, egy kis változtatással az utolsó rétegben. Az utolsó lineáris réteg, azaz az utolsó Sum blokk után a fenti ábrán, a jellemzőtérképek összecsukódnak a függőleges dimenzióban, és egy végső softmax függvényt alkalmazunk a kimenetek lekéréséhez.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A SAR architektúra egy MDLSTM architektúrából áll, amely szolgáltatáskivonóként működik. A végső összeomló, softmax kimenettel és CTC veszteséggel rendelkező modult egy figyelmi modul és egy LSTM dekóder váltja fel. Az alkalmazott figyelemmodell a tartalomalapú figyelem és a hely alapú figyelem hibrid kombinációja, amelyet a következő cikkben részletesebben ismertetünk. A dekódoló LSTM modulok az előző állapotot, a korábbi figyelemleképezést és a kódoló jellemzőit veszik fel, hogy létrehozzák a végső kimeneti karaktert és az állapotvektort a következő előrejelzéshez.

Convolve, Attend és Spell

Ez a cikk egy figyelem alapú sorozat-sorozat modellt javasol a kézzel írt szófelismeréshez. A javasolt architektúra három fő részből áll: egy kódoló, amely egy CNN-ből és egy kétirányú GRU-ból áll, egy figyelemmechanizmus, amely a releváns funkciókra összpontosít, és egy egyirányú GRU-ból alkotott dekóder, amely képes a megfelelő szó kiírására, karakterről karakterre.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A kódoló CNN-t használ a vizuális jellemzők kinyerésére. Az előre betanított VGG-19-BN architektúra szolgáltatáskivonóként használatos. A bemeneti kép X jellemzőtérképpé alakul, amelyet azután X'-re alakítanak át úgy, hogy az összes csatornát oszloponként felosztják, és kombinálják őket, hogy megkapják a szekvenciális információkat. Az X'-t tovább alakítjuk H-vé egy kétirányú GRU használatával. A GRU az LSTM-hez hasonló neurális hálózat, amely időbeli információkat képes rögzíteni.

Továbbá figyelemmodellt alkalmaznak, miközben előrejelzik a dekóder kimenetét. A tanulmány két különböző típusú figyelemmechanizmust tárgyal.

  1. Tartalom alapú figyelem :- A mögöttes ötlet az, hogy megtaláljuk a hasonlóságot a dekóder jelenlegi rejtett állapota és a kódoló jellemzőtérképe között. A leginkább korrelált jellemzővektorokat a kódoló jellemzőtérképében találjuk meg, amelyek segítségével előre jelezhetjük az aktuális karaktert az aktuális időlépésben. További részletek a figyelemmechanizmus működéséről innen tekinthetők meg Figyelem
  2. Hely alapú figyelem :- A tartalom alapú helymeghatározási mechanizmusok fő hátránya, hogy van egy implicit feltételezés, hogy a helyinformáció be van ágyazva a kódoló kimenetébe. Ellenkező esetben nem lehet különbséget tenni a dekóderből ismétlődő karakterkimenetek között. Vegyünk például egy Charmander szót, amelyben az a karakter kétszer ismétlődik, és helyinformáció nélkül a dekódoló nem tudja ezeket külön karakterként megjósolni. Ennek enyhítésére az aktuális karaktert és annak igazítását a kódoló kimenetének és az előző igazításnak a használatával előrejelzi. További részletek a helyfüggő részvétel működéséről megtekinthetők itt.

A dekóder egy egyirányú, többrétegű GRU. Minden t lépésben bemenetet kap az előző időlépésből és a kontextusvektort a figyelemmodultól. A képzés során a multinomiális dekódolást és a címkesimítást vizsgálják az általánosítási képesség javítása érdekében.

Transzformátor modellek

Bár a kódoló-dekódoló hálózatok meglehetősen jó eredményeket értek el a kézírás-felismerés terén, az érintett LSTM rétegek miatt szűk keresztmetszetük van a képzésben, ezért nem lehet párhuzamosítani őket. A közelmúltban a transzformátorok meglehetősen sikeresek voltak, és felváltották az LSTM-et a különféle nyelvi feladatok megoldásában. Most beszéljük meg, hogyan lehet transzformátor alapú modelleket alkalmazni a kézírás-felismerésre.

Figyeljen arra, amit olvas

Ebben a munkában a szerzők olyan transzformátor alapú architektúra alkalmazását javasolták, amely többfejű figyelemfelkeltő önfigyelő rétegeket használ mind vizuális, mind szöveges szakaszban, és így megtanulhatja mind a karakterfelismerést, mind a dekódolandó karaktersorozatok nyelvi függőségeit. Mivel a nyelvtudás magába a modellbe van ágyazva, nincs szükség további utófeldolgozási lépésekre a nyelvi modell használatával, és így képes előre jelezni a szókincshez nem tartozó kimeneteket. Ennek elérése érdekében a szövegkódolás karakter- és nem szószinten történik. Mivel a transzformátor architektúra lehetővé teszi a modell párhuzamos betanítását minden régióhoz vagy karakterhez, a betanítási folyamat jelentősen leegyszerűsödik.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A hálózati architektúra a következő összetevőkből áll

  1. Vizuális kódoló :- A releváns jellemzők kinyerése és a többfejű vizuális önfigyelem alkalmazása a karakterek különböző helyein
  2. Szövegátíró :- Azt a feladatot látja el, hogy átveszi a szövegbevitelt, kódolja azt, alkalmazza a többfejű nyelvi önfigyelmet, és kölcsönös figyelmet fordít mind a vizuális, mind a szöveges jellemzőkre.
Vizuális kódoló

A Resnet50 gerinchálózatot a fenti ábrán látható szolgáltatások bővítésére használják. A Resnet3 Fc háromdimenziós jellemzőtérkép-kimenete átkerül az időkódolási modulhoz, amely 50d-re formálja át ugyanazt a szélességet, és így (fxh, w) alakját is. Ezt betáplálják egy teljesen összekapcsolt rétegbe, hogy az alakzatot (f, w)-re csökkentsék, és az eredmény az Fc'. Ezen túlmenően egy TE pozíciókódolót adunk az Fc'-hez, hogy megőrizzük a Vaswani Transformer papírjában említett pozícióinformációkat. További információ a transzformátor architektúrájáról látható itt. A kimenet áthalad egy teljesen összekapcsolt rétegen, hogy megkapja a végső jellemzőtérképet (f , w) alakkal. A végső kimenet egy többfejű, 8 fejes figyelemmodulon halad keresztül, hogy vizuálisan gazdag jellemzőtérképet kapjon

Szövegátíró

A bemeneti szöveg egy kódolón halad át, amely karakterszintű beágyazásokat generál. Ezeket a beágyazásokat az időbeli elhelyezkedéssel kombinálják, hasonlóan a Visual Encoderben használt módszerhez, egy Temporal Encoder modul használatával. Ezt az eredményt ezután egy többfejű nyelvű önfigyelő modulhoz továbbítják, amely hasonló a Visual encoder figyelmi moduljához. A vizuális kódolóból a vizuális jellemzők mentén generált szövegjellemzők egy kölcsönös figyelem modulba kerülnek, amelynek feladata a képből és a szövegbevitelből tanult jellemzők összehangolása és kombinálása. A kimenetet egy softmax függvényen vezetik át, hogy megkapjuk a végeredményt.

A tesztadatok kiértékelésekor az átiratok nem állnak rendelkezésre. Így csak az <S> kezdő token kerül átadásra bemenetként, és az első előre jelzett karakter visszacsatolásra kerül a rendszerbe, amely a második előre jelzett karaktert adja ki. Ez a következtetési folyamat egy hurokban ismétlődik, amíg az <E> sorozatvégi szimbólum elő nem jön, vagy el nem éri a maximális N kimeneti hosszt.

Kézírásos szöveggenerálás

A kézírásos szöveggenerálás feladata, hogy valódi kinézetű, kézzel írt szöveget generáljon, és így a meglévő adatkészletek bővítésére használható. Mint tudjuk, a mélytanuláshoz sok adatra van szükség a betanításhoz, miközben a különböző nyelveken megjelölt kézírásképek hatalmas korpuszának beszerzése nehézkes feladat. Ennek megoldására használhatjuk a Generative Adversarial Networks képzési adatokat. Beszéljünk itt egy ilyen architektúráról

ScrabbleGAN

A ScrabbleGAN félig felügyelt megközelítést követ a kézírásos szövegképek szintetizálására, amelyek stílusában és lexikonjában egyaránt sokoldalúak. Képes különböző hosszúságú képeket generálni. A generátor módosíthatja az eredményül kapott szövegstílust is, ami lehetővé teszi számunkra annak eldöntését, hogy a szövegnek kurzívnak kell lennie, vagy megmondja, hogy milyen vastag/vékony legyen a tollvonás

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Az architektúra egy BigGAN alapú teljesen konvolúciós generátorból áll. A bemenet minden karakteréhez kiválasztunk egy megfelelő szűrőt, és az összes értéket összefűzzük, majd megszorozzuk egy z zajvektorral, amely szabályozza a generált szövegstílust. Mint fentebb látható, az egyes karakterekhez generált régiók átfedik egymást, így segítik az összekapcsolt rekurzív szöveg létrehozását, valamint lehetővé teszik a különböző karakterméretek rugalmasságát. Például m a hely nagy részét, míg e és t korlátozott területet foglal el. Annak érdekében, hogy a teljes szó vagy mondat ugyanazt a stílust tartsa, a z stílusvektort minden karakter esetében állandó értéken tartjuk.

A BigGAN architektúrán alapuló konvolúciós diszkriminátort használják annak osztályozására, hogy a képek generált stílusa hamisnak vagy valódinak tűnik-e. A diszkriminátor nem támaszkodik karakterszintű annotációkra, és ezért nem egy osztályfeltételes GAN-on alapul. Ennek az az előnye, hogy nincs szükség címkézett adatokra, így a nem látható korpuszból származó adatok, amelyek nem részei a betanítási adatoknak, felhasználhatók a megkülönböztető betanítására. A diszkriminátorral együtt egy R szövegfelismerőt képeznek ki annak osztályozására, hogy a generált szövegnek van-e valós értelme, vagy hamisság. A felismerő CRNN architektúrákon alapul, és eltávolították a visszatérő fejet, hogy a felismerő kissé gyengébb legyen, és ne ismerje fel a szöveget, még akkor sem, ha az homályos. Az R kimenetében generált szöveget összehasonlítjuk a generátornak adott bemeneti szöveggel, és ennek megfelelő büntetést adunk a veszteségfüggvényhez.

A ScrabbleGAN által generált kimenetek az alábbiakban láthatók

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Adatkészletek: -

  1. IAM :- Az IAM adatkészlet körülbelül 100 657 képet tartalmaz angol nyelvű szavakról, XNUMX különböző szerző által írt szavakkal. A vonat, a teszt és az érvényesítési készlet egymást kölcsönösen kizáró szerzők által írt szavakat tartalmaz Link:- http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL :- A CVL-adatkészlet hét kézzel írt dokumentumból áll, amelyeket körülbelül 310 résztvevő írt, és körülbelül 83 ezer szót eredményez, vonat- és tesztkészletekre osztva.Link :- https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. Rimes :- Körülbelül 60 1300 kép francia nyelvű szavakat tartalmaz, amelyeket 5 szerző írt, ami megfelel körülbelül XNUMX személyenként írt levélnek. Link :- http://www.a2ialab.com/doku.php?id=rimes_database:start

Mutatók: -

Karakter hibaarány :- Kiszámítása a Levenshtein távolság, amely az egyik karakterlánc másikká alakításához szükséges karakterhelyettesítések (Sc), beillesztések (Ic) és törlések (Dc) összege, osztva a karakterláncban lévő karakterek teljes számával. alapigazság (Nc)

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Szóhiba arány :- A szóhelyettesítések (Sw), beillesztések (Iw) és törlések (Dw) összegeként kerül kiszámításra, amelyek az egyik karakterlánc másikká történő átalakításához szükségesek, elosztva az alapigazságban lévő szavak teljes számával (Nw).

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Tanítsa meg saját kézírás-felismerő modelljét

Most pedig nézzük meg, hogyan képezhetjük ki saját kézzel írt szövegfelismerő modellünket. Az IAM-adatkészletre oktatunk, de a modellt a saját adatkészletén is betaníthatja. Beszéljük meg a beállítás lépéseit

dátum

Az IAM adatkészlet-regiszter letöltéséhez innen itt. A regisztráció után töltse le a words.tgz fájlt innen itt. Ez a kézzel írt szóképek adatkészletét tartalmazza. Töltse le a szavak.txt megjegyzésfájlt is innen itt.

Ha saját adatkészletét szeretné használni, akkor követnie kell az IAM adatkészlet adatszerkezetét.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A fentiek bemutatják, hogyan néz ki az AIM adatkészlet mappastruktúrája. Itt az a01, a02 stb. azokat a szülőmappákat jelöli, amelyek mindegyike adatalmappákkal rendelkezik. Minden almappának van egy képkészlete, amelyekhez a mappa neve előtagként van hozzáadva.

Ezenkívül szükségünk van egy megjegyzésfájlra, amely megemlíti a képfájlok elérési útját és a megfelelő átírásokat. Tekintsük például a fenti képet szöveges jelöléssel, az alábbi a word.txt megjegyzésfájlban való megjelenítés

a01-000u-01-00 ok 156 395 932 441 100 VBG jelölés

  1. a01-000u-01-00 -> szóazonosító egy sorhoz a01-000u formában
  2. ok/err -> A szegmentálási kimenet minőségének mutatója
  3. 156 -> szürke szint a szót tartalmazó sor binarizálásához
  4. 395 932 441 100 -> határolókeret a szó körül x,y,w,h formátumban
  5. VBG -> a szó nyelvtani címkéje. Itt van Gerund ige
  6. nominating -> ennek a szónak az átírása

Építészet:-

Egy CRNN alapú architektúrát fogunk betanítani CTC veszteséggel. Egy CNN-t használnak a vizuális jellemzők kinyerésére, amelyeket egy RNN-nek továbbítanak, és CTC-vesztést alkalmaznak a végére egy mohó dekóderrel, hogy megkapják a kimenetet.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

Képzések

A CRNN kódot fogjuk használni itt hogy betanítsuk a modellünket. Az adatok előkészítéséhez kövesse az alábbi lépéseket

python checkDirs.py

Futtassa a fenti parancsot, és az alábbihoz hasonló kimenetet kell látnia

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

Most már készen áll az edzés megkezdésére.

Lépjen a gyökérkönyvtárba és futtassa

python main.py --train

Eredmények

Körülbelül 50 korszakos edzés után a karakterhiba-arány (CER) 10.72%, míg a szóhibaarány (WER) 26.45%, így a szópontosság 73.55%. Néhány előrejelzés látható az alábbi ábrán.

Hogyan készítsünk egyszerűen kézírás-felismerést gépi tanulással

A modell nagymértékben képes pontosan megjósolni a szereplőket, de néhány esetben megsínyli, mint például a szörnyen jósolja, mint a szörnyű, a történeteket sztárként jósolják meg. Ezek a problémák megoldhatók egy nyelvi modell utófeldolgozási lépésként történő alkalmazásával, a dekóderrel együtt, amely értelmes szavakat generál, és kijavíthatja az egyszerű hibákat.

Összegzésként

Bár jelentős technológiai fejlesztések történtek, amelyek elősegítik a kézzel írt szövegek jobb felismerését, a HTR messze nem megoldott probléma az OCR-hez képest, ezért az iparban még nem alkalmazzák széles körben. Mindazonáltal a technológiai fejlődés ütemével és az olyan modellek bevezetésével, mint a transzformátorok, arra számíthatunk, hogy a HTR modellek hamarosan mindennapossá válnak.

Ha többet szeretne kutatni erről a témáról, kezdje el innen itt

További olvasnivalók

Időbélyeg:

Még több AI és gépi tanulás