なんとなく ABBYY Cloud OCR SDK を試してみた
スポンサーリンク
ABBYY Cloud OCR SDK、日本語の情報が全然ないみたいなのでちょっと試してみる。
ぶっちゃけると認識率云々よりも料金体系的にあまり使い勝手がよろしくない。
概要など
ABBYYという会社は画像から文字を読み取るとかテキストの翻訳技術を手がけるソフトウェア会社。ABBYY Fine Reader ぐらいしか知らない。 日本だとシャープとか東芝と提携したというニュースを見た記憶がある。
このエントリで対象にしているのは、老舗のOCRソフトウェアの会社(たぶん)の、文字認識機能を提供するWeb API。
リファレンス:OCR SDK API Reference
モバイル向けの別の選択肢
上記のAPIとは別に(Cloudではない)モバイル向けのエンジンもあるみたいだけどそっちはめんどくさそうなのでスルー。
Mobile Data Capture Solution proides an alternative way of data input via mobile devices
Free OCR API Open Source for Real-Time Text Recognition on Mobile devices
1つ目は方は法人向けで個人開発者は相手にする気なさそう。2つ目の方は販売数5,000までは無料らしいが、CJK(つまりい日中韓)は拡張パッケージだと書いてある。
開発者向けの評価プログラム(free trial)
登録すると月間50リクエスト(A4?)までならクレジットカードの登録不要で試せる。
Tweet したりすると月間利用枠が増えるみたいだが試していない。
とりあえず登録
ドメイン名が"abbyy.com"ではないので不安な感じは否めないが、whois的にはバッチリABBYYだったので大丈夫なはずである。
画面中央の"Start free trial now"というボタンをクリックすると、メールアドレスとパスワード、CAPTCHAの入力画面に移動する。
まずはPrivacy Notice のリンクをクリックして内容を確認する。
Facebook または Google のアカウントでもいいみたいだが、ひとまずそういう用途向けのメールアドレス*1で登録する。
詳細入力
詳細入力画面は特に変な項目はない。こんなアプリを作りたいんです云々と入れておけば良い。自動的にメールが来るので内容はどうでもいいのではないだろうか。
重要なのはABBYY CLOUD OCR SDK DEVELOPER AGREEMENT 2016。
“Submit"を押す。
Application ID
Application名を聞いてくるので適当な名前をつける。
あとでApplication ID としてAPIの呼び出しの際に必要になるのであまり短くないほうがいいだろうと思う。
“Create Application” を押す。
登録完了
メールでパスワードが送られてくる。そのまま進むには"Proceed"というリンクをクリックすればいい。
使ってみる
気軽に試すだけならデモページがあるのでそっちでも良いと思う。
とりあえずサンプルがgithubで公開されているので動かしてみる。
ocrsdk.com/Python at master · abbyysdk/ocrsdk.com · GitHub
もしくは、Code Sample のページからダウンロードする。
準備
process.py
というのが実行用のスクリプトで、残りはライブラリになっている。
Python版のスクリプトは環境変数からAPI呼び出しに必要なIDとパスワードを読み取る仕様なので、
ABBYY_APPID
と``をセットする。
$ export ABBYY_APPID=登録時に指定したApplicationの名称 $ export ABBYY_PWD=送られてきたメールに記載のパスワード
結果
使用した画像。
実行コマンド例。出力フォーマットはテキスト以外にPDF、XML、docx、RTFが選択できる。自分でAPIのオプションをセットするなら他にも色々できる。
$ python2.7 process.py -l Japanese -txt misc_trial_special.png test01.txt Uploading.. Id = XXXXXXXX-YYYY-XXXXX-ZZZZ-XXXXXXXXXXXX Status = Queued Waiting...Status = Completed Result was written to test01.txt
Id は伏せています。画像をアップロードしたあと、キューに投入してから結果を返すようなAPIになっています。
丸囲み文字 ①②③④⑤⑥⑦⑧⑨⑩ -问日(:特殊文字 睇糙好铖キ。Iン奴2,トンぐ鉍玟”辟、?ン& ^ -似たような漢字の中に紛れ込ませると? 型璧莖型型莖壁璧壁型壁璧壁型型型型(10以) 壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(12卩卞) 壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(14的) -完璧の璧を壁に変えてみると? 完型な人問はいない。(1〇口1) 完壁な人間はいない(14|31:) -下線 我灌は猫である。名前はまだない。 -傍点 我輩は猫である。名前はまだない。 -その他 吾36は猫である。逛はまだない。 漢字にルビを振る。重&するデータを削除する。順風満帆。
意外とミスってる。画像サイズの問題なのか?
言語の指定方法をJapanese+Englishに変更して再実行。
$ python2.7 process.py -l "Japanese,English" -txt misc_trial_special.png test02.txt
結果は以下。
丸囲み文字 ①②③④⑤⑥⑦⑧⑨⑩ • NEC特殊文字 _糙好铖キ。r奴rトンr鉍_はr辟t ?ン&鉍?r •似たような漢字の中に紛れ込ませると? 型璧莖型型®壁璧壁型壁璧壁型型型型(10pt) 壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(12pt) 壁璧壁壁壁壁壁璧壁壁壁璧壁壁壁壁壁(I4pt) •完璧の璧を壁に変えてみると? 完型な人問はいない。(10pt) 完壁な人間はいない(14pt) •下線 我«は猫である。名前はまだない。 •傍点 我輩は猫である。名前はまだない。 •その他 吾Sは猫である。_はまだない。 漢字にルビを振る。重&するデータを削除する。順風満帆。
目につく認識ミスと特徴は以下のとおり。
- 「・(中黒)」がハイフンになったり、「•(U+2022)」になったり安定しない
- 言語の指定が"Japanese"の場合、英単語を認識してくれない
- 背景に色のついている箇所、黒地に白の箇所で認識ミスを起こしている
- ルビを無視している
- NEC特殊文字は認識できていない*2
- 下線とルビ付きのテキストで認識ミスを起こしている
- テキスト形式で出力させるとBOM(Byte Order Mark)がついてる
- 文字サイズが小さいと認識ミスを起こしやすい?
前回のMicrosoftのAPIと比較すると、取りこぼしは少ない(ふりがなだけ)が、細々と認識ミスがある。それと言語を自動判定してくれない。
リファレンスを見てもファイルサイズの制限はなく、解像度の上限しか記載がないので、ある程度解像度の高い画像が前提なのかもしれない。
Knowledge Base によると30MBまでのファイルに対応しているらしい。
Cloud OCR SDK limitations for input files
完璧の「璧」を意図的に「壁」置き換えたケースで素直に壁と認識している。逆にいうと辞書による変換結果の補正はしてないのだろうか?
欠点
何と言っても価格体系。純粋な従量課金がないので営業担当者と相談になってしまう。紙の面積ベースで価格表示されてもなあ。
一応、事前に料金を払うプラン*3と、毎月支払うプランの2種類ある。リクエスト数の上限次第で価格が変わるが、不特定多数に提供するようなアプリなりWebサービスにすることを考えると要お問い合わせコース。
そのほか
Microsoft のAzure 上で動いているらしい。
iOSに関してはCocoaPods 経由で非公式のライブラリ(Objective-C)がインストールできる。詳細はpod search OCRSDKClient
。ただし、メンテナンスされていないように見える。
また、github で各種言語のサンプルが公開されている。
GitHub - abbyysdk/ocrsdk.com: ABBYY Cloud OCR SDK
npmのパッケージも存在する。
ユーザーフォーラムが503 Service Unavailableなのは地味につらい。
感想など
文字サイズが小さいと認識結果がよろしくない印象だが出力フォーマットのPDFおよぼdocxは魅力的。やはり価格がネック。そういう点では毎月1000リクエストまで無料のGoogle Cloud Vision APIの方が使い勝手は良さげ。
他のAPIと合わせてJIS第3水準などの漢字のカバー率は別途チェックしておきたい。
ざっくり試した感想としては以上です。