はじめに
皆さんこんにちは!ぽこちゃんです
他の記事も投稿してますし、Xではデータサイエンス系、エンジニアリングに関連した
情報を発信しているのでぜひみてってください!
今回はインターンにてPythonでOCRをする機会があって
調査したのでまとめてみました!
ライブラリの選定基準
今回の選定基準は以下の通りです
- モデル
- githubにレポジトリが公開されている
- 商用利用可能
- 英語、数字の検出ができる
- 日本語の検出ができる
- 文字検出(Scene Text Detection)と文字列分類(Scene Text Recognition)両方実施できる
- 最大限精度が良い
- 追加訓練可能
- API
- 商用利用可能
- セキュリティについて問題ない
- 料金
- 英語、数字の検出ができる
- 日本語の検出ができる
- 文字検出と文字列分類両方実施できる
- 最大限精度が良い
- 追加訓練可能
OCRライブラリ一覧
モデル名 | githubリンク | 商用利用可能か | 英語・数字の検出は可能か | 日本語の検出は可能か | 文字検出が可能か | 文字列分類は可能か |
---|---|---|---|---|---|---|
PaddleOCR | https://github.com/PaddlePaddle/PaddleOCR | ○(Apache-2.0) | ○ | ○ | ○ | ○ |
EasyOCR | https://github.com/JaidedAI/EasyOCR | ○(Apache-2.0) | ○ | ○ | ○ | ○ |
Tesseract | https://github.com/tesseract-ocr/tesseract | ○(Apache-2.0) | ○ | ○ | ○ | ○ |
manga-ocr | https://github.com/kha-white/manga-ocr | ○(Apache-2.0) | ○ | ○ | ○ | ○ |
mmocr | https://github.com/open-mmlab/mmocr | ○(Apache-2.0) | ○ | ?(試していない) | ○ | ○ |
モデル詳細
- モデルの詳細
-
Paddleocr
-
検出、認識の学習済み日本語モデルがgithubにある
-
モデルの追加訓練可能
-
多言語に対応(日本語も)
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/visualization.md
-
demo画像を見る限り、精度も良さそう?
-
レイアウト分析+テーブル識別、RE(関係性抽出)
-
-
Tesseract
- Tesseract4は行認識に特化したLSTMベースのocrモデル
- Tesseract3は文字パターンを認識することで動作するモデル
- 100以上の言語をサポート
- PNG、JPEG、TIFFを含む様々な画像フォーマットをサポート
- Tesseractは様々な出力フォーマットもサポート: プレーンテキスト、hOCR(HTML)、PDF、不可視テキストのみのPDF、TSV、ALTO。
- モデルの追加訓練可能
- 精度面での記載なし
-
easy-ocr
- 80以上の言語をサポート
- モデルの追加訓練可能
- 手書き文字のサポート
- さまざまな用途に適用可能(カスタマイズが可能で、特定の用途やニーズに合わせて調整できる)
-
mmocr
- テキスト検出やテキスト認識だけでなく、キー情報抽出のような下流のタスクもサポート
- MMOCRのモジュラー設計により、ユーザーは独自のオプティマイザー、データ・プリプロセッサー、バックボーン、ネック、ヘッド、ロスなどのモデル・コンポーネントを定義可能
-
manga-ocr
- マンガのテキストを上手く扱えるように学習されたモデル
- 縦書きにも対応、ふりがなつきの文字、画像の上に表示されている文字、さまざまなフォント、低画質画像
- 他の種類の印刷された文字にはきちんと対応できるが、手書きのテキストはおそらく扱えない
- TransformerのVision Encoder Decoderフレームワークで構築されたカスタムエンドツーエンドモデルを使用
- マンガOCRは、1回のフォワードパスで複数行のテキストを認識することをサポートしているため、マンガに見られるテキストバブルを行に分割することなく、一度に処理することができる
- 学習済みモデルあり
- モデルの追加訓練可能か 不明
-
参考資料