凄すぎ!Google Cloud Vision APIをつかって簡単高精度にOCR

AI関連の実装/デモ
この記事は約6分で読めます。

はじめに

Google Cloud Vision APIのOCRを試してみたら精度が良すぎてビビったので、やり方とその結果を紹介してみます。

Google Cloud Vision APIを使う準備

Google Cloud Vision APIを使うためのkeyの取得

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。

上のリンクにアクセスし、プロジェクトを作成した上で、visionと検索するとGoogle Cloud Vision APIがでてきますので、選択します。スクリーンショット 2016-06-12 23.53.05

スクリーンショット 2016-06-12 23.53.18

次に、上部の「有効にする」をクリックした後、「認証情報にすすむ」というボタンが現れるのでこちらをクリックし、画面に従って入力します。

ここまで完了したら、やっとAPIキーを取得できます。

API Manger →認証情報にすすみます。

スクリーンショット 2016-06-12 23.57.56

認証情報を作成からAPIキーを選択し、「ブラウザキー」をクリック。
画面に従って入力します。

スクリーンショット 2016-06-12 23.59.38

入力が、完了するとAPIキーが発行されます。

2,Google Cloud Vision API でOCRをはじめよう

APIをたたくためのコードはこちら、

参考元:http://qiita.com/bbr_bbq/items/9005e7b766898e04980b

str_api_keyは、取得したAPIキーに書き換え

#!/usr/bin/python
#coding:utf-8
import base64
import json
from requests import Request, Session

def recognize_captcha(str_image_path):
bin_captcha = open(str_image_path, 'rb').read()

str_encode_file = base64.b64encode(bin_captcha)

str_url = "https://vision.googleapis.com/v1/images:annotate?key="

str_api_key = "KEY"

str_headers = {'Content-Type': 'application/json'}

str_json_data = {
'requests': [
{
'image': {
'content': str_encode_file
},
'features': [
{
'type': "TEXT_DETECTION",
'maxResults': 10
}
]
}
]
}

print("begin request")
obj_session = Session()
obj_request = Request("POST",
str_url + str_api_key,
data=json.dumps(str_json_data),
headers=str_headers
)
obj_prepped = obj_session.prepare_request(obj_request)
obj_response = obj_session.send(obj_prepped,
verify=True,
timeout=60
)
print("end request")

if obj_response.status_code == 200:
print obj_response.text
with open('data.json', 'w') as outfile:
json.dump(obj_response.text, outfile)
return obj_response.text
else:
return "error"

if __name__ == '__main__':
recognize_captcha("jpn.jpg")

 

3,OCR認識結果

それでは、実際に英語の画像と、日本語の画像でOCRを試した結果を以下で紹介していきます。

英語のレシート認識

使った画像はこちら(画像元:https://en.wikipedia.org/wiki/Receipt)

eng

認識結果はこちら

Berghote\n
Grosse Scheidegg\n
3818 Grindelwald\n
Familie R. Muller\n
Rech, Nr. 4572\n
30.07.2007/ 13:29: 17\n
Tisch\n
7/01\n
Bar\n
2xLatte Macchiato\n
4.50 CHF\nC. 00\n1xGloki\n
5.00 CHF 5.00\n
1xSchweinschnitzel 22.00 CHF 22.00\n
1XChasspatzli\n
18, 50 CHF 18.50\n
Total CHF 54 50\n
Incl. 7. 6% MwSt 54.50 CHF\n
3.85\n
Entspricht in Euro 36.33 EUR\n
Es bediente Sie: Ursula\n
MwSt Nr. 430 234\n
Tel.: 033 853 67 16\n
Fax. 033 853 6f 19\n
E-mail: grossescheidegg bluewin. ch\n

うん、いい感じですね。

日本語のレシート認識

それでは、続いて日本語のレシートも試してみましょう。

使った画像はこちら(画像元:http://miettal.hatenablog.com/entry/2015/12/31/020434)

jpn

認識結果はこちら

まいばすけっと\n
千駄木3丁目店\n
TEL03-5815-3877 FAX03-5815-3878\n
領収証\n
営業時間:あさ8時~よる1 2時\n
年中無休\n
SBラー油\n119\n
大阪王将 羽根つき餃子 199\n
味付砂肝スライス\n199\n
若どりももステーキ用 304\n
太鼓判玉うどん\n
合計\n¥920\n
現金\n#920\n
お釣\n¥0\n
お買上げ商品数:5\n
(消費税等)\n
レジ101 2015/11/05(木曜日)21:33\n
取:#80510 担当:2299685\n
63\n
99949\n
19909\n
1113\n

日本語もそこそこうまくいってるようです。

ちなみにオープンソースでOCRが使えるtesseractは日本語はいまいちでした。tesseractの詳細はこちらにまとめています。

【オープンソースで使えるOCR!】Tesseract-Ocrを試してみる【Mac版】
はじめに tesseract-ocrを利用し、OCRをする手順を紹介します。 プロジェクトURL: tesseract-ocrをインストール brew install tesseract 英語の文字認識を試してみる...

さいごに

他にももうちょっと複雑な領収書のような画像もためしてみましたが、かなり高精度でほんとにおどろきました。

タイトルとURLをコピーしました