はじめに
iOSで利用可能なオープンソースのOCRライブラリを調査してみました。
前提条件
下記条件で調査しました。
- 無料であること
- オフラインで利用できること
- サーバサイドやクラウドサービスを介さず利用できること
- 手書き文字は考慮しないこと
- 日本語の認識が可能であること
- 日本語学習データの作成 or チューニングが可能なこと
調査結果
以下の3つのライブラリをピックアップしてみました。
Tesseract OCR iOS | SwiftOCR | SwiftyTesseract | |
---|---|---|---|
OCRエンジン | パターン認識 | ニューラルネットワーク | LSTMニューラルネットワーク |
日本語学習データの提供 | 有 | 無 | 有 |
ライセンス | MIT license | Apache License, Version 2.0 |
MIT License |
依存ライブラリ | Tesseract 3 Leptonica libpng libjpeg libtiff |
Swift-AI GPUImage Union-Find |
Tesseract 4 Leptonica libpng libjpeg libtiff |
Tesseract OCR iOS
OCRエンジンにGoogleが開発を進めているTesseractを採用しているだけあって、情報量が多く人気もあるライブラリです。ただし、Tesseract本体、及び、対応する学習データのバージョンが若干古いため、日本語の認識精度に関しては疑問符が付きます。現在進行系でTesseract最新バージョンの実装を進めている(?)模様。
SwiftOCR
Tesseractよりパフォーマンスに優れる点をアピールしているライブラリです。ただし、短い英数字コードの認識が得意らしく、誌や文を認識したい場合はTesseractが良いと説明しています。日本語を認識するためには学習データを作成する必要があり、トレーニングツールが提供されているとは言え、十分な精度を望むのであれば導入に相応の時間を要しそうです。
SwiftyTesseract
Tesseract OCR iOSに同じく、TesseractをOCRエンジンとして採用しているライブラリです。Tesseract OCR iOSとの違いは最新安定バージョンのTesseractを採用している点で、パフォーマンスと認識精度が大きく向上しています。ただし、Tesseract本体のAPIを完全にはサポートしておらず、利用できない機能があるので注意が必要です。
まとめ
ここ数年で見聞きする機会が多くなった「ディープラーニング」によって、OCRライブラリの文字認識精度が飛躍的に向上している印象を受けました。
調査したライブラリの中では、SwiftyTesseractが最も手軽かつ実用向きではないかと考えます。
他にも有用なライブラリをご存知の方がいらっしゃいましたら、ぜひご教示ください。
おまけ
クラウド可かつ課金可まで条件を緩めると、Firebase向けML Kitのテキスト認識(OCR)一択な気がします。