Zenn Dev Minipoisson Articles Ocr File Verification Tool
Tesseract 5 × OpenCV で作る、閉鎖環境向け OCR 文書検証ツール
- URL: https://zenn.dev/minipoisson/articles/ocr-file-verification-tool
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: 医療・行政・法務などインターネット接続不可の閉鎖環境において、大量紙文書の誤混入を自動検証するC# + Tesseract 5 + OpenCVのOCRツール ocrFileVeriProc の設計と実装を紹介する。従来のトリプルチェック体制や1枚ずつカメラにかざす既存システムが抱えていた「疲労・2枚重なり検知漏れ・膨大な作業時間」という課題を、ソーター付きスキャナ一括スキャン→OCR自動判定→フォルダ仕分け→差異確認のみ人間が対処するフローで解決している。閉鎖環境での長期安定性を優先して最新の.NET 10ではなく.NET Framework 4.8を選択したことや、日本語モードを意図的に無効にして英数字限定で照合精度を担保した戦略など、運用制約に即した技術選定の判断基準を詳しく解説している。
詳細
背景と課題
多数顧客向け文書の並行発行現場で「誤混入」(別人宛て文書が混入)の防止が課題。従来の対策の問題:
- 3人体制のトリプルチェック: 疲労・慣れによるミスをゼロにできない
- 1枚ずつカメラにかざす既存システム: 膨大な作業時間・2枚重なって捲れた場合の検知漏れ
- クラウドOCRサービスが使えない(データが閉鎖環境にある)
解決フロー:
- ソーター付きスキャナで文書を一括スキャン
- OCRアプリが画像内のID番号や文書種別コードを読み取る
- 業務システムから取得した正しい識別子との一致を判定してフォルダを自動仕分け
- 不一致の可能性がある画像のみ人間が確認
技術選定の判断
.NET Framework 4.8 × C# 8.0 を選択した理由:
- Windows 11のOSコンポーネントの一部として扱われ、OSのサポート期限まで利用可能
- 更新が容易ではない閉鎖環境では最新フレームワークより長期安定性を優先
- .NET 10等は閉鎖環境でのランタイム更新が課題になる
OCRエンジン・画像処理:
- Tesseract 5: 日本語・英数字の認識精度が旧バージョンより大幅向上、処理がオフラインで完結
- OpenCvSharp: 傾き補正・二値化などOCR精度を左右する前処理を高速に行う
実装のポイント
並列処理(TPL / Task Parallel Library):
- Parallel.ForEach を使用
- MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1)(1コア分空けてUIレスポンスを確保)
ファイルロック管理:
- Bitmap を直接OCRにかけず、using 句でスコープを管理してメモリ上で Mat に変換
- bmp のスコープを抜けた瞬間にファイルロックが解放されるため File.Move・File.Delete が安全に実行できる
英数字限定戦略(「あえて日本語を扱わない」):
- Tesseractの日本語モードを有効にすると「1」を「①」「一」と誤読するリスクが高まる
- 判定対象をIDやコード類に絞り、英数字のみの学習データを使用して照合信頼性を担保
UI/UX設計:
- 判定ルール設定: 「行内に複数を書けばAND、行を分ければOR」という直感的なUI
- Windows Explorerとの協調: アプリ内に高度な画像ビューアを作り込まず、Explorerでフォルダを開いて整理させることでアプリ自体を軽量に保つ
本番運用は諸事情により見送りとなったが、閉鎖環境での試行錯誤のプロセスをOSSとして公開。