kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

GCPのCloud Vision APIでOCRを試す

OCR(文字認識)をやろうとして調べたところ、日本語に対応できているGCPを試してみました。

参考記事

cloud.google.com

GCPのアカウントはある前提で書いています。今回はCloud Vision APIを使用しています。コードはpythonです。

サービスの有効化

参考記事の「始める前に」を進めます。

  • プロジェクト作成
  • 使用するサービスのAPIを有効化

サービス アカウント キーの作成

サービス アカウント キーを取得します。

cloud.google.com

コードで環境変数にセットして使用できるようにするだけで使用可能になります。

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

サンプルで家にある本で試し

f:id:kazu22002:20210627114257p:plain

自走プログラマー
Pythonの先輩が教えるプロジェクト開発のベストプラクティス
120
清水川貴之、清原弘貴、tell-k|]株式会社ビープラウド【監修】
開発の着実なプロセスが身につく作りたいものを設計できるエラーやトラブルに対応できる
プログラミング能力を活かして価値を生み出すための「ソフトウェア開発の地図」を手に入れよう
技術評論社

すごい認識率ですね。

日本語の認識がちゃんとできてる時点でかなりの精度だとわかります。

まとめ

オープンソースのライブラリも使ってみましたが、日本語がネックなようで認識率はかなり厳しかったので、GCPの認識率にかなり驚きました。

GCP便利だわ。

英語だと26文字の識別ができればいいですが、日本語のひらがな、カタカナ、漢字という文字数の多さは文字認識において課題にしかなりませんね。

海外の方が日本語を使う上でひらがなを先にできるようにする理由がよくわかります。漢字は果てしないですね。正直、漢字ができなくてもいいのではないかと思うようになってきましたね。

漢字を正確に覚えるぐらいなら、英語ができるようになったほうが生活が充実するのではないのか。とか思ってます。といいつつ、ブログで漢字を多用していることは否めない。

使えれば便利ではある。間違っていてもいいや。ぐらいの気持ちである。