対象: この記事は、B1、B2、F8、K7、KF1、L5、P2、Q6、Q8、T2、Y6の各読み取りペンに搭載するOCRアーキテクチャを選定中の機械学習エンジニア、ファームウェア責任者、OEMバイヤー向けです。読者はすでに少なくとも1本のOCRベンチマーク論文を読み、TesseractとCRNNを理解しており、ラボデモではなく実運用中の読み取りペンから得られた具体的な数値を求めていることを前提とします。
読み取りペンのOCRは、一般的なOCR問題の制約付きサブセットです。テキストは常に印刷文字(手書きではなく)、リファレンスビルドでは常にラテン文字またはCJK、使用される用紙タイプは既知、ワーキングディスタンス0.5 mm〜1.2 mm、固定焦点レンズで取得されます。これらの制約により、汎用OCRエンジンを latency で4倍〜10倍上回りながら、精度は同等以上を達成できます。本記事では、私たちが出荷した3世代のOCR、各モデルの精度とレイテンシ、およびOEM契約におけるOCRの仕様化方法について解説します。
1. 読み取りペンにおける3世代のOCR
読み取りペン市場は2015年以降、3つのOCRアーキテクチャを経てきました:
- 第1世代(2020年以前):二値化、連結成分分析、テンプレートマッチングによる古典的なTesseract型パイプライン。レガシーペンで使用。当社の現行B1、B2、P2はTesseractを搭載せず、趣旨は同様である独自のG1エンジンを搭載しています。
- 第2世代(2020年〜2024年):CRNN(CNN + 双方向LSTM + CTC)。G2エンジンはF8、K7、KF1、Q6、Y6に搭載されています。
- 第3世代(2024年〜現在):軽量CNN特徴抽出器と小型transformerエンコーダによるシーケンスモデリングを併用したハイブリッドパイプライン。G3エンジンはL5、Q8、T2に搭載されています。
各世代は、精度、レイテンシ、モデルサイズ、ホストCPU要件の間で異なるトレードオフを提供します。最適な選択は、対象となる読み取りペンモデルと、ユーザーがスキャンするテキストの種類によって異なります。
2. G1エンジン:B1、B2、P2の古典的パイプライン
B1、B2、P2のG1エンジンは、5ステージの古典的パイプラインです:
- 二値化:ISP出力に対する大津の手法。
- 連結成分分析:候補となる文字ブロブを抽出。
- 文字分割:ヒューリスティックな線幅モデルにより、文字連結境界でブロブを分割。
- 特徴抽出:文字ごとに64ビンの方向特徴ヒストグラム。
- 分類:サポート対象スクリプトごとに、96クラスの1対他線形SVM(クラスごとに1モデル)。
モデルサイズ合計は、ラテン文字(96文字×クラスあたり14 KB)で1.4 MB、ラテン文字+拡張版で2.8 MB、CJK基本(3,500文字)で3.5 MBです。P2はラテン文字のみ1.4 MBで出荷されます。B1とB2はラテン文字のみ1.4 MBで出荷されます。
児童書からスキャンした12文字の単語に対して、P2上のG1エンジンは合計65 msで動作します:二値化8 ms、連結成分14 ms、文字分割12 ms、文字分類24 ms、辞書検索7 ms。ペン接触から最初の音声までのエンドツーエンド latency は95 ms〜120 msです。
ICDAR 2015読み取りペンサブセット(公開サンプルと非公開サンプルから当社が独自に作成した1,200画像のベンチマーク)におけるG1の文字レベル精度:
- 鮮明な印刷文字:97.6%。
- 着色背景上のテキスト:89.4%。
- 光沢紙上のテキスト:91.2%。
- 小型フォント(8 pt未満):78.3%。
- 同一行内の複数スクリプト混在:72.1%。
小型フォントと複数スクリプト混在が弱点です。5〜7歳児向けの語彙集の場合、印刷文字は通常16 pt〜24 ptで鮮明なため、G1の精度は許容可能です。年長児童向けの教科書の場合、小型フォントのケースによりG1の精度は80%を下回るため、B1、B2、P2はその用途には推奨しません。
3. G2エンジン:F8、K7、KF1、Q6、Y6のCRNN
G2エンジンは、7層CNNに続いて2層双方向LSTMとCTCデコーダーを使用する構成です。アーキテクチャは2015年のShiらの論文による標準的なCRNNに、2点の修正を加えたものです:(1) パラメータ数を4分の1に削減するdepthwise separable畳み込みを採用、(2) デバイス上での安定性向上のためバッチ正規化をグループ正規化に置換。
モデルサイズ:
- ラテン文字:4.6 MB(float32)、1.4 MB(int8)。
- ラテン文字+拡張版:9.2 MB(float32)、2.7 MB(int8)。
- CJK基本:18.4 MB(float32)、5.4 MB(int8)。
K7、KF1、Q6、Y6では、int8モデルがCortex-A53 CPU上で12文字単語あたり38 msで動作します。F8はホストMCUにint8アクセラレーションがないためfloat32のみで出荷され、F8の latency は64 msです。
同一のICDAR 2015読み取りペンサブセットにおけるG2の文字レベル精度:
- 鮮明な印刷文字:98.7%。
- 着色背景上のテキスト:95.2%。
- 光沢紙上のテキスト:96.0%。
- 小型フォント(8 pt未満):92.4%。
- 同一行内の複数スクリプト混在:88.9%。
G2はG1と比較して、小型フォントと複数スクリプト混在の差を大きく縮めます。92.4%の小型フォント精度は、教科書用途として許容可能です。88.9%の複数スクリプト混在精度は、同一行上に2つのスクリプトが現れる bilingual dictionaries 用途として許容可能です。
4. G3エンジン:L5、Q8、T2のハイブリッドCNN + Transformer
G3エンジンはハイブリッド構成です。CNNフロントエンドがステップあたり128チャンネルの64ステップ特徴シーケンスを抽出します。4ヘッド、隠れユニット256の4層transformerエンコーダがシーケンスをモデル化します。CTCデコーダーはG2と同様に最上部に配置されます。
モデルサイズ:
- ラテン文字:7.8 MB(float32)、2.3 MB(int8)。
- ラテン文字+拡張版:15.6 MB(float32)、4.6 MB(int8)。
- CJK基本:31.2 MB(float32)、9.1 MB(int8)。
L5では、int8モデルがCPU上で12文字単語あたり32 msで動作します。Q8とT2では、int8モデルがNPU上でそれぞれ18 ms、11 msで動作します。
ICDAR 2015読み取りペンサブセットにおけるG3の文字レベル精度:
- 鮮明な印刷文字:99.2%。
- 着色背景上のテキスト:97.4%。
- 光沢紙上のテキスト:97.8%。
- 小型フォント(8 pt未満):95.9%。
- 同一行内の複数スクリプト混在:94.6%。
G3は5カテゴリーすべてで95%を超える最初の世代です。transformerの attention が、G2のLSTMが苦戦する複数スクリプト混在行の曖昧性解消に寄与しています。
5. latency とメモリ:3世代比較
12文字単語におけるペン接触から最初のデコード済み音声までのエンドツーエンド latency:
| 世代 | モデルサイズ(int8) | ホスト | レイテンシ | 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 | Cortex-A53 CPU | 32 ms | 5.1 MB |
| G3 (Q8) | 2.3 MB | 0.5 TOPS NPU | 18 ms | 5.1 MB |
| G3 (T2) | 2.3 MB | 1.2 TOPS NPU | 11 ms | 5.1 MB |
G3 on T2 は 11ms と最速ですが、ユニットあたり $14.50 のコストがかかります。G1 on B1 はユニットあたり $3.80 と最安ですが、レイテンシは 120ms です。最適な選択は、どのエンジンが「優れているか」ではなく、ユースケースによって決まります。
6. なぜ Tesseract をそのまま使わないのか?
バイヤーから Tesseract を採用しない理由を尋ねられることがあります。理由は3つあります。
- Tesseract はスキャン文書向けに設計されており、ビデオレートでのペン先画像向けではありません。二値化処理とレイアウト解析は 300 DPI のページスキャンに合わせて調整されており、60 fps のペン先ストリーム向けではありません。F8 上で Tesseract を実行すると単語あたり 320ms かかり、G2 より 8 倍遅くなります。
- Tesseract の LSTM モデルはラテン文字用で 33 MB です。G2 モデルは 1.4 MB int8 です。K7 の 8 MB フラッシュ容量では Tesseract は搭載できません。
- Tesseract の ICDAR 読み取りペンサブセットにおける精度は、クリーン文字で 95.1%、小さなフォントで 86.3% です。G2 は 98.7% と 92.4% です。読み取りペンにとって重要なすべての指標で Tesseract は劣っています。
OEM 要件が「Tesseract を実行しなければならない」であるなら、それは間違った製品を指定しています。11 モデルのラインナップは、1 つのエンジンでは全ユースケースに対応できないという理由から存在します。
7. なぜ常に最大モデルを実行しないのか?
当然の疑問:G3 の方が高精度なら、なぜ全モデルに搭載しないのか? 答えはホスト CPU とフラッシュ容量です。
- B1 と B2 は Cortex-M4 クラスの MCU 80 MHz で出荷されます。G3 では許容できるレイテンシで動作しません。
- P2 は 4 MB フラッシュで出荷されます。G3 ラテン文字 int8 は 2.3 MB に加え、辞書 0.8 MB とファームウェア 0.4 MB で合計 3.5 MB になります。オーディオアセットを含めるとフラッシュは満杯になります。
- F8 は Cortex-A7 800 MHz で出荷されます。G3 int8 は 180 ms で動作し、人間の知覚閾値を超えます。
そのため G3 は、ホスト SoC に CPU 容量とフラッシュ容量の両方がある L5、Q8、T2 に限定されています。他の 8 モデルは G1 または G2 を使用しています。
8. エンドツーエンドのオーディオパイプラインへの影響
OCR は 5 ステージパイプラインの中の 1 ステージです:ISP → テキスト検出 (TC-128) → セグメンテーション → OCR → 辞書検索 → TTS → オーディオ出力。OCR のレイテンシは通常ボトルネックではありません。オーディオバッファ充填、TTS 合成、DAC スタートアップを合わせて 30 ms 〜 60 ms 加算されます。したがって、OCR エンジンが 38 ms か 32 ms かはユーザー体験を変えません。より重要なのはテールレイテンシです:99 パーセンタイルで 38 ms から 280 ms へのスパイクが、オーディオのスタッター感を引き起こします。
10,000 回連続認識でテールレイテンシを測定しています。G3 on L5 は 99 パーセンタイルレイテンシ 64 ms(中央値 32 ms に対し)です。G3 on T2 は 99 パーセンタイル 22 ms(中央値 11 ms に対し)です。テールは DRAM キャッシュミスとオーディオエンジンとの DMA 競合が要因です。T2 は RAM 帯域幅が広いため、テールがよりタイトです。
9. 学習データと継続的な改善
G3 モデルは、47 カ国 38,000 人の読み取りペンユーザーから収集された 620 万行のスキャンコーパスで学習されています(2023 年以降の累計)。行は 14 言語、12 種類の用紙、9 種類のフォントファミリーに及びます。合成歪み(遠近ワープ、ぼかし、紙テクスチャ、印刷背景、JPEG 風圧縮アーティファクト)で拡張しています。
モデルは四半期ごとに再学習されます。各リリースは、ホールドアウトされた ICDAR 2015 サブセットと前四半期から抽出した 200,000 行のプロダクションサンプルによる回帰テストでゲートされます。リリースは、14 サポート言語のいずれかを退行させることなく、精度を 0.2 パーセンテージポイント以上改善した場合のみ出荷されます。
バイヤーへのヒント: サプライヤーに OCR モデルの再学習頻度と回帰テストコーパスの内容を尋ねてください。「時間があるときに」再学習するベンダーは、古いモデルを出荷しています。四半期ごとのケイデンスはファームウェアリリースノートに文書化されています。
10. OEM 契約における OCR 仕様
防御可能な OCR 仕様には以下が含まれます:
- エンジン世代とモデルファイルサイズ。
- 指定テストセットでの文字レベル精度(ご要望に応じて ICDAR 2015 読み取りペンサブセットを出荷します)。
- 12 文字単語での中央値および 99 パーセンタイルレイテンシ。
- メモリ予算(フラッシュ + RAM)。
- サポートされるスクリプト。
- 再学習ケイデンスと回帰テスト方法論。
- 生産ラインでのモデル別キャリブレーションレポート。
テキスト検出がOCRの前にどのように行われるかについては、Reading Pen テキスト検出とセグメンテーションをご参照ください。画像信号処理プロセッサがOCRエンジンにどのようにデータを供給するかについては、Reading Pen カメラ ISP と画像信号処理プロセッサをご覧ください。YUV出力がOCR入力にどのように対応するかについては、読みペン YUV 対 RGB と色空間を参照してください。 handwriting recognition エンジンについては、Reading Pen handwriting recognition エンジンをご覧ください。当社のICDARサブセットに対するコンテンツ比較ベンチマークレポートのご依頼は、/request-a-quote.
関連資料
- Reading Pen テキスト検出とセグメンテーション
- Reading Pen カメラ ISP と画像信号処理プロセッサ
- Reading Pen handwriting recognition エンジン
- 読みペン YUV 対 RGB と色空間
- Reading Pen 辞書ファイル形式と版
- OID読みペン技術の仕組み
補足資料: 右から左および縦書き文字のOCR
アラビア語、ヘブライ語、ペルシャ語のOCRは、言語モデルレベルでの右から左への処理を必要としますが、G2およびG3エンジンはネイティブにこれをサポートします。OCRエンジンは画像から視覚的な順序で文字シーケンスを左から右へ出力し、言語モデルがそのシーケンスを正しい論理順序に反転および再整形します。50,000行のアラビア語テストセットにおける精度は、G3 T2で94.8%、G2 K7で91.6%です。ラテン文字と比較して精度が低いのは、文字の連結形(字頭形・字中形・字末形・独立形)により有効なクラス数が4倍に増加するためです。
縦書き文字(繁体字中国語、日本語、モンゴル語)については、回転したアンカーボックスを備えた専用の縦書きテキストモデルを出荷しています。アーキテクチャはG3と同じですが、学習データセットには縦書きの行クロップを使用します。モデルサイズは水平モデルと比べて1.2倍の2.8 MB int8です。L5ではホストCPUが35 msのレイテンシ要件を満たせないため、縦書きテキストモデルは搭載していません。Q8およびT2は縦書きテキストをそれぞれ22 msおよび14 msで処理します。
混在向きのページ(横書きの段落と縦書きのサイドバーが両方含まれる教科書など)は、まずページ全体で水平モデルを実行し、水平モデルの信頼度が低かった領域に対してのみ垂直モデルを実行することで処理されます。この選択的アプローチにより、両モデルをページ全体で実行した場合の36 msに対し、Q8での平均レイテンシは19 msに抑えられます。