"Klassinen OCR vs. syväoppiva OCR B1-, B2-, F8-, K7-, KF1-, L5-, P2-, Q6-, Q8-, T2- ja Y6-lukukynissä: tarkkuuden, viiveen, muistin ja OEM-kompromissien analyysi."

Lähetetty: huhti 12, 2024 - 42 Näyttökerrat

OCR-moottori lukukynässä vs. syväoppiva OCR: klassinen putkisto, CNN ja Transformer – kompromissit

Kohderyhmä: Tämä artikkeli on suunnattu ML-insinööreille, laiteohjelmiston vastaaville ja OEM-ostajille, jotka arvioivat, mitä OCR-arkkitehtuuria kannattaa tuoda B1-, B2-, F8-, K7-, KF1-, L5-, P2-, Q6-, Q8-, T2- ja Y6-lukukyniin. Oletamme, että olet lukenut ainakin yhden OCR-vertailuartikkelin, ymmärrät Tesseractia ja CRNN:ää, ja haluat konkreettisia lukuja tuotantokäytössä olevasta lukukynästä etkä laboratoriodemoa.

Lukukynän OCR on yleisen OCR-ongelman rajoitettu osajoukko. Teksti on aina painettua (ei käsinkirjoitettua), aina latinaa tai CJK:ta referenssiversioissamme, aina tunnetulla paperityypillä ja aina kuvattuna kiinteällä 0,5–1,2 mm:n työskentelyetäisyydellä kiinteän tarkennuksen linssillä. Näiden rajoitteiden ansiosta päihitämme yleiskäyttöisen OCR-moottorin latenssissa 4–10-kertaisesti säilyttäen tai ylittäen sen tarkkuuden. Tässä artikkelissa käydään läpi kolme toimittamaamme OCR-sukupolvea, kunkin mallin tarkkuus- ja latenssiarvot sekä se, miten OCR määritellään OEM-sopimuksessa.

1. Kolme OCR-sukupolvea lukukynissä

Lukukynämarkkinat ovat vuodesta 2015 lähtien kiertäneet kolmen OCR-arkkitehtuurin läpi:

  • Sukupolvi 1 (ennen vuotta 2020): klassinen Tesseract-tyylinen putki, jossa binarisointi, yhdistettyjen komponenttien analyysi ja mallipohjainen tunnistus. Käytössä vanhoissa kynissä. Nykyiset B1, B2 ja P2 eivät toimita Tessearctia; ne toimittavat oman G1-moottorimme, joka on hengeltään samankaltainen.
  • Sukupolvi 2 (2020–2024): CRNN (CNN + kaksisuuntainen LSTM + CTC). G2-moottorimme toimitetaan F8-, K7-, KF1-, Q6- ja Y6-malleissa.
  • Sukupolvi 3 (2024–nykyhetki): hybridiputki, jossa kevyt CNN-piirteenirrotin ja pieni transformer-enkooderi sekvenssimallinnukseen. G3-moottorimme toimitetaan L5-, Q8- ja T2-malleissa.

Kukin sukupolvi edustaa eri kompromissia tarkkuuden, latenssin, mallin koon ja isäntä-CPU-vaatimusten välillä. Oikea valinta riippuu siitä, mihin lukukynämalliin kohdistat, ja millaista tekstiä käyttäjä skannaa.

2. G1-moottori: klassinen putki malleissa B1, B2 ja P2

G1-moottori malleissa B1, B2 ja P2 on 5-vaiheinen klassinen putki:

  1. Binarisointi: Otsun menetelmä ISP-lähdölle.
  2. Yhdistettyjen komponenttien analyysi: erottaa ehdokkaat olevat merkkialueet.
  3. Merkkien segmentointi: jakaa alueet ligatuurirajoilla heuristisen viivanleveysmallin avulla.
  4. Piirteiden irrotus: 64-bin suunta-piirrehistogrammi merkkiä kohden.
  5. Luokittelu: 96-luokan one-vs-all lineaarinen SVM, yksi malli tuettua kirjoitusta kohden.

Mallin kokonaiskoko on 1,4 MB latinaksi (96 merkkiä x 14 KB/luokka), 2,8 MB latinalaisille laajennetuille merkeille, 3,5 MB CJK-perusmerkeille (3 500 merkkiä). P2 toimitetaan vain latinaversiona 1,4 MB kokoisena. B1 ja B2 toimitetaan vain latinaversiona 1,4 MB kokoisena.

12-merkkisessä sanassa lastenkirjasta skannattuna G1-moottori P2:lla vie yhteensä 65 ms: 8 ms binarisointi, 14 ms yhdistettyjen komponenttien analyysi, 12 ms segmentointi, 24 ms luokittelu, 7 ms sanakirjahaku. Päästä päähän -latenssi kynän kosketuksesta ensimmäiseen ääneen on 95–120 ms.

G1-merkkikohtainen tarkkuus ICDAR 2015 -lukukynäosajoukossa (1 200 kuvan vertailuaineisto, jonka olemme kuratoineet julkisista ja yksityisistä näytteistä):

  • Puhdas painoteksti: 97,6 %.
  • Teksti sävytetyllä taustalla: 89,4 %.
  • Teksti kiiltävällä paperilla: 91,2 %.
  • Pienet kirjasinkoot (alle 8 pt): 78,3 %.
  • Sekakirjoitukset samalla rivillä: 72,1 %.

Pienet kirjasinkoot ja sekakirjoitustapaukset ovat heikkoja kohtia. 5–7-vuotiaille suunnatussa sanastokirjassa painoteksti on yleensä 16–24 pt ja puhdasta, joten G1-tarkkuus on hyväksyttävä. Vanhemmille oppilaille suunnatussa oppikirjassa pienten kirjasinkokojen tapaus vetää G1-tarkkuuden alle 80 %:iin, minkä vuoksi emme suosittele B1-, B2- tai P2-malleja siihen käyttöön.

3. G2-moottori: CRNN malleissa F8, K7, KF1, Q6 ja Y6

G2-moottori käyttää 7-kerroksista CNN:ää, jonka jälkeen tulee 2-kerroksinen kaksisuuntainen LSTM ja CTC-dekooderi. Arkkitehtuuri on standardi CRNN Shi et al. 2015 -artikkelista, kahdella muutoksella: (1) käytämme depthwise-separable -konvoluutioita pienentääksemme parametrien määrän neljäsosaan, ja (2) korvaamme batch normin group normilla paremman laitteessa tapahtuvan vakauden saavuttamiseksi.

Mallin koko:

  • Latina: 4,6 MB (float32), 1,4 MB (int8).
  • Latina + laajennettu: 9,2 MB (float32), 2,7 MB (int8).
  • CJK-perus: 18,4 MB (float32), 5,4 MB (int8).

Malleissa K7, KF1, Q6 ja Y6 int8-malli toimii Cortex-A53-CPU:lla 38 ms:ssa 12-merkkistä sanaa kohden. F8 toimitetaan vain float32-versiona, koska sen isäntä-MCU:sta puuttuu int8-kiihdytys; F8:n latenssi on 64 ms.

G2-merkkikohtainen tarkkuus samassa ICDAR 2015 -lukukynäosajoukossa:

  • Puhdas painoteksti: 98,7 %.
  • Teksti sävytetyllä taustalla: 95,2 %.
  • Teksti kiiltävällä paperilla: 96,0 %.
  • Pienet kirjasinkoot (alle 8 pt): 92,4 %.
  • Sekakirjoitukset samalla rivillä: 88,9 %.

G2 kuroo kiinni eron pienissä kirjasinkokoluokissa ja sekakirjoituksissa huomattavasti verrattuna G1:een. 92,4 % pienillä kirjasinkokilla on hyväksyttävä oppikirjakäyttöön. 88,9 % sekakirjoituksissa on hyväksyttävä kaksikielisille sanakirjoille, joissa kaksi kirjoitusta esiintyy samalla rivillä.

4. G3-moottori: hybridi CNN + Transformer malleissa L5, Q8 ja T2

G3-moottori on hybridi. CNN-etupää irrottaa 64-askeleen piirresarjan 128 kanavalla askelta kohden. 4-kerroksinen transformer-enkooderi, jossa on 4 attention headia ja 256 piilotettua yksikköä, mallintaa sekvenssiä. CTC-dekooderi on päällä, kuten G2:ssa.

Mallin koko:

  • Latina: 7,8 MB (float32), 2,3 MB (int8).
  • Latina + laajennettu: 15,6 MB (float32), 4,6 MB (int8).
  • CJK-perus: 31,2 MB (float32), 9,1 MB (int8).

L5:ssä int8-malli toimii CPU:lla 32 ms:ssa 12-merkkistä sanaa kohden. Q8:ssa ja T2:ssa int8-malli toimii NPU:lla 18 ms ja 11 ms vastaavasti.

G3-merkkikohtainen tarkkuus ICDAR 2015 -lukukynäosajoukossa:

  • Puhdas painoteksti: 99,2 %.
  • Teksti sävytetyllä taustalla: 97,4 %.
  • Teksti kiiltävällä paperilla: 97,8 %.
  • Pienet kirjasinkoot (alle 8 pt): 95,9 %.
  • Sekakirjoitukset samalla rivillä: 94,6 %.

G3 on ensimmäinen sukupolvi, joka ylittää 95 % kaikissa 5 kategoriassa. Transformerin attention auttaa erottamaan sekakirjoitusrivit, joissa G2:n LSTM kamppailee.


OCR Engine Comparison — Accuracy vs Latency on Latin 12-Char Word

5. Latenssi ja muisti: kaikkien kolmen sukupolven vertailu

Päästä päähän -latenssi kynän kosketuksesta ensimmäiseen dekoodattuun ääneen 12-merkkisessä sanassa:

Sukupolvi Mallin koko (int8) Isäntä Latenssi RAM
G1 (B1/B2/P2) 1,4 Mt Cortex-M4 95–120 ms 2,1 Mt
G2 (F8) 4,6 Mt (float32) Cortex-A7 64 ms 6,8 Mt
G2 (K7/KF1/Q6/Y6) 1,4 Mt (int8) Cortex-A53 38 ms 4,2 Mt
G3 (L5) 2,3 Mt Cortex-A53 CPU 32 ms 5,1 Mt
G3 (Q8) 2,3 Mt 0,5 TOPS NPU 18 ms 5,1 Mt
G3 (T2) 2,3 Mt 1,2 TOPS NPU 11 ms 5,1 Mt

G3 T2:lla on nopein 11 ms, mutta sen yksikköhinta on 14,50 dollaria. G1 B1:llä on halvin 3,80 dollaria yksiköltä, mutta viive on 120 ms. Oikea valinta riippuu käyttökohteestasi, ei siitä, mikä moottori on ”parempi”.

6. Miksi ei ajeta Tesseractia?

Ostajat kysyvät toisinaan, miksi emme toimita Tesseractia. Syitä on kolme:

  1. Tesseract on suunniteltu skannatuille asiakirjoille, ei videotahtisille kynänkärjen kuville. Sen binärisointi ja asetteluanalyysi on viritetty 300 DPI:n sivuskannauksille, ei 60 fps:n kynänkärki­virroille. Tesseractin ajaminen F8:lla vie 320 ms sanaa kohden, mikä on 8× hitaampi kuin G2.
  2. Tesseractin LSTM-malli on 33 MB latinalaisille kirjaimille. G2-malli on 1,4 MB int8-muodossa. K7:n 8 MB flash-muistilla Tesseract ei mahdu.
  3. Tesseractin tarkkuus ICDAR-lukukynä­osajoukossa on 95,1 % puhtaalla tekstillä ja 86,3 % pienillä fonteilla. G2:lla vastaavat luvut ovat 98,7 % ja 92,4 %. Tesseract on huonompi joka lukukynälle olennaisella mittarilla.

Jos OEM-vaatimuksesi on ”täytyy käyttää Tesseractia”, määrittelet väärän tuotteen. 11 mallin valikoima on olemassa, koska yksi moottori ei sovi kaikkiin käyttökohteisiin.

7. Miksi ei aina ajeta suurinta mallia?

Luonnollinen kysymys: jos G3 on tarkempi, miksei sitä laiteta jokaiseen malliin? Vastaus on isäntä­prosessorin CPU ja flash-muistin tilanne.

  • B1 ja B2 toimitetaan Cortex-M4-luokan MCU:lla 80 MHz:n taajuudella. G3 ei toimisi millään hyväksyttävällä viiveellä.
  • P2:ssa on 4 MB flash-muistia. G3 Latin int8 on 2,3 MB + 0,8 MB sanasto + 0,4 MB laiteohjelmisto, yhteensä 3,5 MB. Ääni­resurssien kanssa flash on täynnä.
  • F8 toimitetaan Cortex-A7:llä 800 MHz:n taajuudella. G3 int8 toimisi 180 ms viiveellä, mikä ylittää ihmisen havaintokynnyksen.

G3 on siksi rajattu malleihin L5, Q8 ja T2, joissa isäntä­piirillä on sekä CPU- että flash-resursseja. Muissa kahdeksassa mallissa käytetään G1:tä tai G2:ta.

8. Kokonais­valtainen ääni­putken vaikutus

OCR on yksi vaihe viisivaiheisessa putkessa: ISP → tekstintunnistus (TC-128) → segmentointi → OCR → sanasto­haku → TTS → ääni ulos. OCR-viive ei yleensä ole pullonkaula. Ääni­puskurin täyttö, TTS-synteesi ja DAC-käynnistys lisäävät yhteensä 30–60 ms. Siksi 38 ms:n ja 32 ms:n ero OCR-moottorissa ei muuta käyttäjä­kokemusta. Tärkeämpää on häntä­viive: 99. persentiilin piikki 38 ms:stä 280 ms:iin saa äänen kuulostamaan katkonaiselta.

Mittaamme häntä­viiveen 10 000 peräkkäisestä tunnistuksesta. G3 L5:llä 99. persentiilin viive on 64 ms (mediaani 32 ms). G3 T2:lla 99. persentiili on 22 ms (mediaani 11 ms). Häntä­viiveen aiheuttavat DRAM-välimuistin epäonnistumiset ja DMA:n kilpailu ääni­moottorin kanssa; T2:ssa on enemmän RAM-kaistaa, joten sen häntä on tiukempi.

9. Koulutusdata ja jatkuva kehittäminen

G3-malli on koulutettu 6,2 miljoonan skannatun rivin korpuksella, joka on kerätty 38 000 lukukynän käyttäjältä 47 maassa (kumulatiivinen vuodesta 2023). Rivit kattavat 14 kieltä, 12 paperityyppiä ja 9 fontti­perhettä. Augmentoimme synteettisillä vääristymillä: perspektiivi­vääristymä, sumennus, paperin tekstuuri, painettu tausta, JPEG-tyyppiset pakkaus­artefaktit.

Malli koulutetaan uudelleen neljännes­vuosittain. Jokainen julkaisu tarkistetaan regressio­testillä ICDAR 2015 -osajoukossa sekä 200 000 rivin tuotanto­otoksessa edelliseltä vuosineljännekseltä. Julkaisu lähetetään vain, jos tarkkuus paranee ≥ 0,2 prosentti­yksikköä ilman, että mikään tuetuista 14 kielestä heikkenee.

Vinkki ostajalle: Kysy toimittajalta, kuinka usein OCR-malli koulutetaan uudelleen ja millainen regressio­testi­korpus on. Toimittaja, joka kouluttaa uudelleen ”silloin kun on aikaa”, toimittaa vanhentuneen mallin. Neljännes­vuosi­rytmimme on dokumentoitu laiteohjelmiston julkaisu­muistioissa.

10. OCR:n määrittely OEM-sopimuksessa

Puolustettava OCR-määrittely sisältää:

  • Moottori­sukupolvi ja malli­tiedoston koko.
  • Merkki­tason tarkkuus nimetyllä testi­joukolla (toimitamme ICDAR 2015 -lukukynä­osajoukon pyynnöstä).
  • Mediaani- ja 99. persentiilin viive 12 merkin sanalle.
  • Muisti­budjetti (flash + RAM).
  • Tuetut kirjoitus­järjestelmät.
  • Uudelleen­koulutus­rytmi ja regressio­testi­menetelmä.
  • Malli­kohtainen kalibrointi­raportti tuotanto­linjalta.

Lisätietoja tekstin tunnistuksesta ennen OCR:ää löydät artikkelista Lukukynän tekstintunnistus ja segmentointi. Kuvan signaaliprosessorin ja OCR-moottorin yhteistyöstä kerrotaan sivulla Lukukynän kameran ISP ja kuvan signaaliprosessori. YUV-lähdön yhdistämisestä OCR-syötteeseen kerrotaan artikkelissa Lukukynän YUV vs RGB ja väriavaruus. Käsinkirjoituksen tunnistusmoottorista voit lukea sivulta Lukukynän käsinkirjoituksen tunnistusmoottori. Jos haluat pyytää ICDAR-otosta vastaavan vertailuraportin sisällöllenne, tutustu /request-a-quote.

OCR Engine Generations Compared

Aiheeseen liittyvää luettavaa

Pyydä tarjous – saa nopean tehdaskohtaisen vastauksen

Lisälukemista: OCR oikealta vasemmalle ja pystysuuntaisille kirjoitustyyleille

Arabian, heprean ja persian kielen OCR vaatii oikealta vasemmalle -käsittelyä kielimallitasolla, minkä G2- ja G3-moottorit tukevat natiivisti. OCR-moottori tuottaa merkkijonon vasemmalta oikealle kuvan visuaalisessa järjestyksessä, ja kielimalli kääntää sekä muotoilee jonon oikeaan loogiseen järjestykseen. Tarkkuus 50 000 rivin arabiankielisellä testijoukolla on 94,8 % G3 T2 -mallilla ja 91,6 % G2 K7 -mallilla. Latinalaiseen kirjaimistoon verrattuna matalampi tarkkuus johtuu yhteenliitetyistä kirjainmuodoista (alku-, keski-, loppu- ja erillismuoto), jotka nelinkertaistavat käytännön luokkien määrän.

Pystysuuntaisille kirjoitustyyleille (perinteinen kiina, japani, mongoli) toimitamme erillisen pystysuuntaisen tekstin mallin, jossa on kierrettyjä ankkurilaatikoita. Arkkitehtuuri on identtinen G3:n kanssa, mutta harjoitusjoukko käyttää pystysuuntaisia tekstirivejä. Malli on 1,2-kertainen vaakasuuntaiseen malliin verrattuna, kooltaan 2,8 MB int8-muodossa. Emme toimita pystysuuntaista tekstinmallia L5:lle, koska isäntä-CPU ei saavuta 35 ms:n latenssitavoitetta; Q8 ja T2 käsittelevät pystysuuntaista tekstiä 22 ms ja 14 ms vastaavasti.

Sekapohjaiset sivut (oppikirja, jossa on yksi vaakasuuntainen kappale ja yksi pystysuuntainen sivupalkki) käsitellään ajamalla vaakasuuntainen malli ensin koko sivulle ja sen jälkeen pystysuuntainen malli vain niille alueille, joilla vaakasuuntainen malli palautti matalan luottamuksen. Tämä valikoiva lähestymistapa pitää keskimääräisen latenssin 19 ms:ssä Q8:lla, kun molempien mallien ajaminen koko sivulle veisi 36 ms.

Frequently Asked Questions

Mitkä lukukynämallit käyttävät syväoppivaa OCR:ää?
Mallit F8, K7, KF1, Q6 ja Y6 käyttävät CRNN-pohjaista syväoppivaa OCR-moottoria nimeltä G2. Mallit L5, Q8 ja T2 käyttävät CNN- ja transformer-moottoria nimeltä G3. Mallit B1, B2 ja P2 käyttävät perinteistä putkistoa nimeltä G1, koska niiden Cortex-M4-luokan mikrokontrollerit eivät pysty suorittamaan neuroverkkoa hyväksyttävällä viiveellä. G3 on tarkin 99,2 %:n tarkkuudella puhtaalla tekstillä; G2 saavuttaa 98,7 %; G1 saavuttaa 97,6 %.
Mikä on pienin fonttikoko, jonka lukukynän OCR tunnistaa?
G3-moottorilla T2-mallissa jopa 6 pt:n fontit, joiden kirjainkorkeus on 0,18 mm, tunnistetaan 91,4 %:n merkkikohtaisella tarkkuudella. G2-moottorilla K7-mallissa sama 6 pt:n teksti laskee 86,2 %:n tarkkuuteen. G1-moottorilla B1-mallissa 6 pt:n tekstin tarkkuus on 71,8 %. Koulun oppikirjoille, joissa on 8 pt:n runkoteksti, suosittelemme vain malleja L5, Q8 ja T2 G3-moottorilla.
Kuinka usein OCR-malli koulutetaan uudelleen?
G3- ja G2-mallit koulutetaan uudelleen neljännesvuosittain 6,2 miljoonan rivin korpuksella, joka on kerätty 47 maasta. Jokaisen version on parannettava kokonaistarkkuutta vähintään 0,2 prosenttiyksikköä ICDAR 2015 -lukukynä-aliaineistossa eikä se saa heikentää mitään 14 tuetusta kielestä. Uudelleenkoulutuksen aikataulu ja regressiotestauksen menetelmät on dokumentoitu jokaisessa laiteohjelmiston julkaisutiedotteessa.
Miksi OCR-mallin koko vaihtelee mallien välillä?
Int8 G3 Latin -malli on 2,3 MB levyllä, int8 G2 Latin -malli on 1,4 MB ja int8 G1 Latin -putkisto on 1,4 MB. Jokaisen mallin flash-muistibudjetti rajoittaa tuettuja kirjoitusjärjestelmiä. B1, B2 ja P2 toimitetaan vain latinalla. K7, KF1, Q6 ja Y6 toimitetaan latinalla ja 6 laajennetulla latinalaisella kirjoitusjärjestelmällä. L5, Q8 ja T2 toimitetaan latinalla, CJK-peruskirjoitusjärjestelmällä, arabialla ja kyrillisellä.
Voiko OEM-sanastolle kouluttaa mukautetun OCR-mallin?
Kyllä. Hyväksymme asiakkaan aineistokokoelmia, joissa on vain 50 000 skannattua riviä, ja hienosäädämme G2- tai G3-mallin 8 tunnissa yhdellä A100-näytönohjaimella. Hienosäädetty malli toimitetaan allekirjoitettuna binaarina ja korvaa yleismallin laiteohjelmistossa. OEM-tilausmäärä on vähintään 5 000 yksikköä; koulutuksen SLA on 15 arkipäivää, mukaan lukien 3 päivää laadunvarmistusta ja asiakkaan hyväksyntä.
Ostoskorisi
Sivustomme käyttökokemus paranee evästeiden ansiosta. Evästekäytäntö
Chat on WhatsApp