RPAの自動化やRAG型チャットボットへのデータ取り込みのために、文書処理にOCR(光学文字認識)を組み込もうとする企業は、たいてい同じ2つの壁にぶつかります。
1つ目の壁はGPUのコストです。 特に大規模なVision-Language系の多言語OCRモデルは、実用的な速度で動かすためにGPUでの推論を必要とします。 クラウドのGPUインスタンスは、同等のCPUインスタンスに比べて時間あたりの料金が何倍にもなり、しかも文書処理の負荷は波があるため、ピークに合わせて確保した容量の多くが普段は使われずに残ります。
2つ目の壁はデータリスクです。 金融機関、医療機関、そして日本の個人情報保護法(APPI)やGDPRの対象となる企業にとって、個人情報を含む文書を外部のクラウドAPIに送信すること自体が許されない場合があります。 従量課金のAPI料金体系も、文書量が増えるほどコストの予測を難しくします。
よくある回避策は、Tesseractのような軽量なCPU向けエンジンを使うことですが、これはコストとプライバシーの問題は解決しても、鮮明でない実写画像に対する精度が弱く、非ラテン文字の言語も苦手とします。
実際に作ったもの、そして主張していないこと
VAONは、製品ラベルの実写画像から識別番号(シリアル番号、IMEI、型番)を読み取るOCRマイクロサービスを必要としていました。 撮影条件は傾き、照明のムラ、時にはピントのズレも含む、実際の作業現場そのものです。 最初からCPU専用、GPUに依存しないことが要件でした。
すべての言語を1つのモデルで高い精度でカバーしようとする代わりに、私たちは処理を2つのエンジンに分けました。
メインエンジンには、既存のオープンソースモデルであるPP-OCRv6_mediumを採用しています。 検出モデル59MBと認識モデル73MBの2部構成で、合計132MBです。 英語、日本語、中国語、ラテン文字の認識を担当し、CPUのみで動作します。 実写ラベル画像で検証した結果、英語で信頼度0.997、日本語で信頼度0.999を記録し、いずれも完全に正しく読み取れています。
2つ目のエンジンは、ある具体的な問題への対応として存在します。 ベトナム語をメインエンジンでテストしたところ、声調記号が完全に脱落してしまいました。 「Sản phẩm Việt Nam」という文字列は「Sn phm Vit Nam」となり、劣化ではなく丸ごと消えていました。 メインエンジンをファインチューニングすると、他の言語で既に得られている精度を損なうおそれがあるため、ベトナム語専用のVietOCRを別途追加する方式を選びました。 こちらは重みファイルだけで145MB、PyTorchランタイムを含めると約623MBとかなり大きいため、ベトナム語のリクエストが実際に来たときだけ、環境変数のフラグで読み込む構成にしています。 VietOCRを使うことで、信頼度は0.913まで改善しました。 ベトナム語に関してはほぼ使い物にならなかったメインエンジンからの大きな改善です。
各エンジンは共有のロックではなく、それぞれ専用のセマフォで排他制御しています。 重いVietOCRのリクエストが、はるかに軽いPP-OCRv6側のリクエストを待たせてしまう事態を避けるためです。
識別番号そのものを抽出する部分に、専用モデルは使っていません。 既知のラベル形式に対する正規表現によるパターン照合、画像上の座標の近さによる関連付け、IMEI向けのLuhnチェックサムという、ルールベースのロジックで処理しています。 抽出された値は必ずどのルールが根拠になったか追跡できるため、誤検出が起きたときの原因調査がしやすくなっています。
セキュリティとテスト、掛け声だけではなく
このサービスでは、アップロード画像を25メガピクセルまでに制限してdecompression-bomb攻撃を防ぎ、ダウンロードした重みファイルはすべてSHA256で検証し、CVE-2023-4863を修正済みのPillowバージョンで稼働させています。 テストはユニットテスト42件、実モデルを使った統合テスト12件の合計54件で構成されており、モックではなく実際のモデルに対して実行しています。
これが示すこと、そして限界はどこにあるか
CPU専用で動作することで、コスト項目からGPUがなくなります。 また処理がすべてお客様自身のインフラ内で完結するため、画像や抽出後のテキストが外部に出ることはなく、APPIやGDPRの対象となる組織にとって直接意味のある点です。 特定の認証を取得済みだと申し上げているわけではありません。 VAONは現時点でISO27001の認証は取得しておらず、当社のセキュリティ運用はISO27001の枠組みに基づいて構築している段階で、認証取得は今後のロードマップに含まれています。
上記の132MBという数値や信頼度は、今回検証に用いた実写ラベルの画像セットで測定した結果です。 ラベルのデザイン、カメラの角度、照明条件が変われば、個別の検証が必要になります。 特定の導入案件で同じ数値をそのままお約束することはできません。 この検証工程は、実際の案件の範囲を決める際に必ず含めているステップであり、最初から大きな数値を掲げるために省略しているものではありません。
CPU専用またはオンプレミスのOCRパイプラインをご検討中の企業様は、テスト方法と本記事で挙げた数値の根拠をすべてまとめた技術ケーススタディをご覧いただくか、無料相談にお申し込みください。
公式サイト: https://vaon.com.vn/ja