GCPのCloud Vision APIでOCRを試す
OCR(文字認識)をやろうとして調べたところ、日本語に対応できているGCPを試してみました。
参考記事
GCPのアカウントはある前提で書いています。今回はCloud Vision APIを使用しています。コードはpythonです。
サービスの有効化
参考記事の「始める前に」を進めます。
- プロジェクト作成
- 使用するサービスのAPIを有効化
サービス アカウント キーの作成
サービス アカウント キーを取得します。
コードで環境変数にセットして使用できるようにするだけで使用可能になります。
import os os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "key_path.json" # json_pathは、サービスアカウントキーのパス
OCR実行
実行コード
import io from google.cloud import vision def read_ocr(input_file): client = vision.ImageAnnotatorClient() with io.open(input_file, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) return response response = read_ocr("sample.jpg")
実行することで画像から文字を判断し、文字を抽出することができます。
返されるデータは位置情報と文字が取得でき、文字ブロックごとの取得も可能です。
def get_document_bounds(response): text_list = [] document = response.full_text_annotation for page in document.pages: for block in page.blocks: text_block = "" for paragraph in block.paragraphs: for word in paragraph.words: for symbol in word.symbols: text_block += symbol.text text_list.append(text_block) return text_list
サンプルで家にある本で試し
自走プログラマー Pythonの先輩が教えるプロジェクト開発のベストプラクティス 120 清水川貴之、清原弘貴、tell-k|]株式会社ビープラウド【監修】 開発の着実なプロセスが身につく作りたいものを設計できるエラーやトラブルに対応できる プログラミング能力を活かして価値を生み出すための「ソフトウェア開発の地図」を手に入れよう 技術評論社
すごい認識率ですね。
日本語の認識がちゃんとできてる時点でかなりの精度だとわかります。
まとめ
オープンソースのライブラリも使ってみましたが、日本語がネックなようで認識率はかなり厳しかったので、GCPの認識率にかなり驚きました。
GCP便利だわ。
英語だと26文字の識別ができればいいですが、日本語のひらがな、カタカナ、漢字という文字数の多さは文字認識において課題にしかなりませんね。
海外の方が日本語を使う上でひらがなを先にできるようにする理由がよくわかります。漢字は果てしないですね。正直、漢字ができなくてもいいのではないかと思うようになってきましたね。
漢字を正確に覚えるぐらいなら、英語ができるようになったほうが生活が充実するのではないのか。とか思ってます。といいつつ、ブログで漢字を多用していることは否めない。
使えれば便利ではある。間違っていてもいいや。ぐらいの気持ちである。