"Klasické OCR vs. deep learning OCR na čtecích perech B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 a Y6: analýza přesnosti, latence, paměti a kompromisů pro OEM."

Zveřejněno: dub 12, 2024 - 43 Zobrazení

OCR engine čtecího pera vs. deep learning OCR: klasické pipeline, CNN a kompromisy transformátorů

Cílová skupina: Tento článek je určen pro ML inženýry, vedoucí vývoje firmwaru a OEM kupce, kteří hodnotí, kterou architekturu OCR nasadit do čtecích per B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 a Y6. Předpokládáme, že jste četli alespoň jednu benchmarkovou studii o OCR, rozumíte Tesseractu a CRNN a chcete konkrétní čísla z produkčního nasazení čtecího pera, ne z laboratorní ukázky.

OCR pro čtecí pera je omezenou podmnožinou obecného problému OCR. Text je vždy tištěný (ne ručně psaný), v našich referenčních sestaveních vždy latinkový nebo CJK, vždy na známém typu papíru a vždy snímán v pevné pracovní vzdálenosti 0,5 mm až 1,2 mm objektivem s pevným ostřením. Tyto podmínky nám umožňují překonat univerzální OCR engine v latenci 4× až 10× při stejné nebo vyšší přesnosti. Tento článek prochází tři generace OCR, které jsme dodali, čísla přesnosti a latence pro jednotlivé modely a způsob, jak specifikovat OCR v OEM smlouvě.

1. Tři generace OCR v čtecích perech

Trh s čtecími pery od roku 2015 prošel třemi architekturami OCR:

  • Generace 1 (před rokem 2020): klasické Tesseract-styl pipeline s binarizací, analýzou souvislých komponent a porovnáváním šablon. Používá se ve starších perech. Naše aktuální B1, B2 a P2 nedodáváme Tesseract; dodáváme náš proprietární engine G1, který je koncepčně podobný.
  • Generace 2 (2020 až 2024): CRNN (CNN + obousměrné LSTM + CTC). Náš engine G2 dodáváme na F8, K7, KF1, Q6 a Y6.
  • Generace 3 (2024 až současnost): hybridní pipeline s odlehčeným extraktorem CNN příznaků a malým transformer enkodérem pro sekvenční modelování. Náš engine G3 dodáváme na L5, Q8 a T2.

Každá generace představuje jiný kompromis mezi přesností, latencí, velikostí modelu a požadavky na hostitelský CPU. Správná volba závisí na tom, který model čtecího pera cílíte a jaký typ textu uživatel skenuje.

2. Engine G1: klasická pipeline na B1, B2 a P2

Engine G1 na B1, B2 a P2 je 5-stupňová klasická pipeline:

  1. Binarizace: Otsuova metoda na výstupu ISP.
  2. Analýza souvislých komponent: extrakce kandidátních blobů znaků.
  3. Segmentace znaků: dělení blobů na hranicích ligatur pomocí heuristického modelu tloušťky tahu.
  4. Extrakce příznaků: 64-příhrádkový směrový histogram příznaků pro každý znak.
  5. Klasifikace: 96-třídní one-vs-all lineární SVM, jeden model pro každý podporovaný skript.

Celková velikost modelu je 1,4 MB pro latinku (96 znaků × 14 KB na třídu), 2,8 MB pro latinku + rozšířenou, 3,5 MB pro základní CJK (3 500 znaků). P2 se dodává pouze s latinkou o velikosti 1,4 MB. B1 a B2 se dodávají pouze s latinkou o velikosti 1,4 MB.

Na 12-písmenném slově naskenovaném z dětské knihy běží engine G1 na P2 celkem 65 ms: 8 ms binarizace, 14 ms souvislé komponenty, 12 ms segmentace, 24 ms klasifikace, 7 ms slovníkový dotaz. Latence end-to-end od přiložení pera k prvnímu zvuku je 95 ms až 120 ms.

Přesnost G1 na úrovni znaků na podmnožině ICDAR 2015 pro čtecí pera (1 200 snímků benchmarku, který jsme sestavili z veřejných + soukromých vzorků):

  • Čistý tištěný text: 97,6 %.
  • Text na tónovaném pozadí: 89,4 %.
  • Text na lesklém papíře: 91,2 %.
  • Malá písma (pod 8 pt): 78,3 %.
  • Smíšené skripty v jedné řádce: 72,1 %.

Malá písma a smíšené skripty jsou slabá místa. Pro slovní zásobu určenou dětem 5 až 7 let je tištěný text obvykle 16 pt až 24 pt a čistý, takže přesnost G1 je přijatelná. Pro učebnici pro starší žáky případ malých písem stahuje přesnost G1 pod 80 %, proto B1, B2 ani P2 pro tento případ použití nedoporučujeme.

3. Engine G2: CRNN na F8, K7, KF1, Q6 a Y6

Engine G2 používá 7-vrstvou CNN následovanou 2-vrstvým obousměrným LSTM a CTC dekodérem. Architektura je standardní CRNN z práce Shi et al. z roku 2015, se dvěma úpravami: (1) používáme depthwise-separable konvoluce, které snižují počet parametrů 4×, a (2) batch norm nahrazujeme group norm pro lepší stabilitu na zařízení.

Velikost modelu je:

  • Latinka: 4,6 MB (float32), 1,4 MB (int8).
  • Latinka + rozšířená: 9,2 MB (float32), 2,7 MB (int8).
  • Základní CJK: 18,4 MB (float32), 5,4 MB (int8).

Na modelech K7, KF1, Q6 a Y6 běží int8 model na Cortex-A53 CPU s latencí 38 ms na 12znakové slovo. F8 je dodáván pouze s float32, protože jeho hostitelský MCU nepodporuje int8 akceleraci; latence F8 je 64 ms.

Přesnost G2 na úrovni znaků na stejné podmnožině čtecích per ICDAR 2015:

  • Čistý tištěný text: 98,7 %.
  • Text na tónovaném pozadí: 95,2 %.
  • Text na lesklém papíře: 96,0 %.
  • Malá písma (pod 8 pt): 92,4 %.
  • Smíšené písmy v jedné řádce: 88,9 %.

G2 výrazně stírá rozdíl u malých písem a smíšených písem ve srovnání s G1. Hodnota 92,4 % u malých písem je přijatelná pro použití v učebnicích. Hodnota 88,9 % u smíšených písem je přijatelná pro dvojjazyčné slovníky, kde se dvě písma objevují na jedné řádce.

4. Engine G3: Hybridní CNN + Transformer na L5, Q8 a T2

Engine G3 je hybridní. CNN front-end extrahuje sekvenci 64 příznaků, každý se 128 kanály. 4vrstvý transformer encoder se 4 attention hlavami a 256 skrytými jednotkami modeluje sekvenci. CTC decoder sedí navrchu, stejně jako u G2.

Velikost modelu:

  • Latinka: 7,8 MB (float32), 2,3 MB (int8).
  • Latinka + rozšířená: 15,6 MB (float32), 4,6 MB (int8).
  • Základní CJK: 31,2 MB (float32), 9,1 MB (int8).

Na L5 běží int8 model na CPU s latencí 32 ms na 12znakové slovo. Na Q8 a T2 běží int8 model na NPU s latencí 18 ms, respektive 11 ms.

Přesnost G3 na úrovni znaků na podmnožině čtecích per ICDAR 2015:

  • Čistý tištěný text: 99,2 %.
  • Text na tónovaném pozadí: 97,4 %.
  • Text na lesklém papíře: 97,8 %.
  • Malá písma (pod 8 pt): 95,9 %.
  • Smíšená písma v jedné řádce: 94,6 %.

G3 je první generace, která překračuje 95 % ve všech 5 kategoriích. Transformer attention pomáhá rozlišovat řádky se smíšenými písmy, kde LSTM v G2 selhává.


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

5. Latence a paměť: srovnání všech tří generací

End-to-end latence od dotyku pera k prvnímu dekódovanému zvuku na 12znakovém slově:

Generace Velikost modelu (int8) Hostitel Latence RAM
G1 (B1\/B2\/P2) 1,4 MB Cortex-M4 95–120 ms 2,1 MB
G2 (F8) 4,6 MB (float32) Cortex-A7 64 ms 6,8 MB
G2 (K7\/KF1\/Q6\/Y6) 1,4 MB (int8) Cortex-A53 38 ms 4,2 MB
G3 (L5) 2,3 MB CPU Cortex-A53 32 ms 5,1 MB
G3 (Q8) 2,3 MB NPU 0,5 TOPS 18 ms 5,1 MB
G3 (T2) 2,3 MB NPU 1,2 TOPS 11 ms 5,1 MB

G3 na T2 je nejrychlejší s 11 ms, ale stojí 14,50 USD za kus. G1 na B1 je nejlevnější s 3,80 USD za kus, ale se 120 ms latencí. Správná volba závisí na vašem případu použití, ne na tom, který engine je „lepší“.

6. Proč prostě nepoužít Tesseract?

Kupující se někdy ptají, proč nedodáváme Tesseract. Ze tří důvodů:

  1. Tesseract je navržen pro naskenované dokumenty, ne pro obraz se špičky pera při snímkové frekvenci. Jeho binarizace a analýza rozvržení jsou laděny pro skeny stránek při 300 DPI, ne pro 60 fps streamy ze špičky pera. Spuštění Tesseractu na F8 trvá 320 ms na slovo, což je 8× pomalejší než G2.
  2. Tesseractův LSTM model má pro latinku 33 MB. Model G2 má 1,4 MB int8. V 8 MB flash paměti K7 se Tesseract nevejde.
  3. Přesnost Tesseractu na podmnožině čtecích per ICDAR je 95,1 % na čistém textu, 86,3 % na malém písmu. G2 má 98,7 % a 92,4 %. Tesseract je horší na každé metrice, která je pro čtecí pero důležitá.

Pokud váš požadavek OEM zní „musí běžet Tesseract“, specifikujete špatný produkt. Řada 11 modelů existuje proto, že jeden engine nevyhoví všem případům použití.

7. Proč ne vždy provozovat největší model?

Přirozená otázka: když je G3 přesnější, proč jej nedáme do každého modelu? Odpověďí je výkon hostitelského CPU a kapacita flash paměti.

  • B1 a B2 se dodávají s MCU třídy Cortex-M4 na 80 MHz. G3 by na nich neběžel s žádnou přijatelnou latencí.
  • P2 se dodává s 4 MB flash paměti. G3 Latin int8 má 2,3 MB plus 0,8 MB slovník a 0,4 MB firmware, celkem 3,5 MB. S audio soubory je flash paměť plná.
  • F8 se dodává s Cortex-A7 na 800 MHz. G3 int8 by běžel na 180 ms, což je nad prahem lidského vnímání.

G3 je proto vyhrazen pro L5, Q8 a T2, kde hostitelský SoC má jak rezervu CPU, tak rezervu flash paměti. Zbývajících 8 modelů používá G1 nebo G2.

8. Dopad na kompletní audio pipeline

OCR je jednou fází pětifázového pipeline: ISP → detekce textu (TC-128) → segmentace → OCR → slovníkový lookup → TTS → audio výstup. Latence OCR obvykle není úzkým hrdlem. Naplnění audio bufferu, syntéza TTS a spuštění DAC dohromady přidávají 30 ms až 60 ms. Engine OCR, který trvá 38 ms oproti 32 ms, tedy nemění uživatelský prožitek. Co záleží více, je ocasní latence: špička 99. percentilu z 38 ms na 280 ms způsobí, že audio působí zadrhávavě.

Ocasní latenci měříme na 10 000 po sobě jdoucích rozpoznáních. G3 na L5 má 99. percentil latence 64 ms (oproti mediánu 32 ms). G3 na T2 má 99. percentil 22 ms (oproti mediánu 11 ms). Ocas je tažen cache missy v DRAM a kolizemi DMA s audio enginem; T2 má větší šířku pásma RAM, takže jeho ocas je těsnější.

9. Tréninková data a průběžné zlepšování

Model G3 je trénován na korpusu 6,2 milionu naskenovaných řádků, nasbíraných od 38 000 uživatelů čtecích per ze 47 zemí (kumulativně od roku 2023). Řádky pokrývají 14 jazyků, 12 typů papíru a 9 rodin fontů. Augmentujeme syntetickými zkresleními: perspektivní deformace, rozostření, textura papíru, tištěný podklad, JPEG-like artefakty komprese.

Model je přetrénováván čtvrtletně. Každé vydání je bráněno regresním testem na vyčleněné podmnožině ICDAR 2015 a na 200 000 řádcích produkčního vzorku z předchozího čtvrtletí. Vydání je nasazeno, pouze pokud zlepší přesnost o ≥ 0,2 procentního bodu bez regrese u žádného ze 14 podporovaných jazyků.

Tip pro kupující: Zeptejte se dodavatele, jak často je OCR model přetrénováván a jak vypadá korpus regresních testů. Dodavatel, který přetrénovává „když má čas“, dodává zastaralý model. Naše čtvrtletní kadence je zdokumentována v poznámkách k vydání firmwaru.

10. Specifikace OCR v OEM smlouvě

Obhajitelná specifikace OCR zahrnuje:

  • Generaci enginu a velikost souboru modelu.
  • Přesnost na úrovni znaků na pojmenované testovací sadě (podmnožinu čtecích per ICDAR 2015 dodáváme na vyžádání).
  • Medián a 99. percentil latence na 12znakovém slově.
  • Rozpočet paměti (flash + RAM).
  • Podporované písmové systémy.
  • Kadenci přetrénování a metodiku regresních testů.
  • Kalibrační zprávu na kus na výrobní lince.

Další informace o tom, jak se text detekuje před OCR, naleznete v části Detekce a segmentace textu čtecího pera. Jak obrazový signálový procesor předává data do jádra OCR, najdete v Kamera čtecího pera a obrazový signálový procesor (ISP). Jak výstup YUV mapuje na vstup OCR, najdete v Čtecí pero: YUV vs. RGB a barevný prostor. Informace o jádru pro rozpoznávání ručního písma naleznete v Jádro čtecího pera pro rozpoznávání ručního písma. Pro vyžádání zprávy o benchmarku porovnávající váš obsah s naší podmnožinou ICDAR navštivte /request-a-quote.

OCR Engine Generations Compared

Související čtení

Poptávka — získejte rychlou odpověď z výroby

Doplňkové čtení: OCR pro text psaný zprava doleva a ve svislém směru

OCR pro arabštinu, hebrejštinu a perštinu vyžaduje zpracování zprava doleva na úrovni jazykového modelu, což jádra G2 a G3 nativně podporují. Jádro OCR vydává pořadí znaků zleva doprava ve vizuálním pořadí z obrázku a jazykový model posloupnost obrátí a přetvaruje do správného logického pořadí. Přesnost na testovací sadě 50 000 řádků arabštiny činí 94,8 % u G3 T2 a 91,6 % u G2 K7. Nižší přesnost ve srovnání s latinkou je způsobena spojovanými tvary písmen (na začátku, uprostřed, na konci, izolované), které čtyřnásobně zvyšují efektivní počet tříd.

Pro vertikální písma (tradiční čínština, japonština, mongolština) dodáváme samostatný model pro vertikální text s otočenými anchor boxy. Architektura je shodná s G3, ale trénovací sada používá výřezy vertikálních řádků. Model je 1,2× větší než horizontální model, má 2,8 MB int8. Vertikální text nedodáváme na L5, protože hostitelský CPU nesplní cílovou latenci 35 ms; Q8 a T2 zvládají vertikální text za 22 ms, respektive 14 ms.

Stránky se smíšenou orientací (učebnice s jedním horizontálním odstavcem a jedním vertikálním postranním panelem) se zpracovávají tak, že se nejprve na celou stránku spustí horizontální model a poté se vertikální model spustí pouze v oblastech, kde horizontální model vrátil nízkou spolehlivost. Tento selektivní přístup udržuje průměrnou latenci na 19 ms u Q8 oproti 36 ms, pokud by oba modely běžely na celé stránce.

Frequently Asked Questions

Které modely čteček používají OCR s hlubokým učením?
Modely F8, K7, KF1, Q6 a Y6 používají OCR engine G2 založený na CRNN. Modely L5, Q8 a T2 používají engine G3 založený na CNN a transformeru. Modely B1, B2 a P2 používají klasické zpracování G1, protože jejich MCU třídy Cortex-M4 nedokážou provozovat neuronovou síť s přijatelnou latencí. G3 je nejpřesnější – 99,2 % na čistém textu; G2 dosahuje 98,7 %; G1 dosahuje 97,6 %.
Jakou nejmenší velikost písma dokáže OCR čtečky rozpoznat?
U enginu G3 na modelu T2 je text o velikosti 6 pt s výškou malých písmen 0,18 mm rozpoznán s přesností 91,4 % na úrovni znaků. U G2 na modelu K7 klesá přesnost stejného 6 pt textu na 86,2 %. U G1 na modelu B1 dosahuje 6 pt text přesnosti 71,8 %. Pro školní učebnice s tělem textu 8 pt doporučujeme pouze modely L5, Q8 a T2 s enginem G3.
Jak často se model OCR přetrénovává?
Modely G3 a G2 se přetrénovávají čtvrtletně na korpusu o 6,2 milionu řádků z 47 zemí. Každá verze musí zlepšit celkovou přesnost alespoň o 0,2 procentního bodu na držené podmnožině ICDAR 2015 pro čtečky a nesmí zhoršit žádný ze 14 podporovaných jazyků. Kadence přetrénování a metodika regresních testů jsou zdokumentovány v poznámkách ke každému vydání firmwaru.
Proč se velikost OCR modelu mezi modely liší?
Int8 latinský model G3 má na disku 2,3 MB, int8 latinský model G2 má 1,4 MB a int8 latinské zpracování G1 má 1,4 MB. Flashová kapacita každého modelu omezuje podporované skripty. B1, B2 a P2 se dodávají pouze s latinkou. K7, KF1, Q6 a Y6 se dodávají s latinkou a 6 rozšířenými latinskými skripty. L5, Q8 a T2 se dodávají s latinkou, základní CJK, arabštinou a cyrilicí.
Lze pro slovník OEM natrénovat vlastní model OCR?
Ano. Přijímáme zákaznické korpusy již od 50 000 naskenovaných řádků a model G2 nebo G3 doladíme za 8 hodin na jednom GPU A100. Doladěný model je dodáván jako podepsaný binární soubor a ve firmwaru nahradí obecný model. Minimální objednávka OEM je 5 000 kusů; SLA pro trénink je 15 pracovních dní včetně 3 dnů QA kontroly a schválení zákazníkem.
Váš košík
Povolením cookies zlepšíte svou zkušenost na tomto webu. Zásady cookies
Chat on WhatsApp