Cloud Vision API による高精度な画像認識(OCR)

Google Cloud Vision API とは

Google Cloud Vision APIとは、Google社の最先端の画像認識技術をAPI(※)により利用できるサービスのことです。
※APIとは、第三者が開発したソフトウェアやアプリケーションの機能の一部を共有できるようにしたものです。

事前に強力なトレーニング済みの機械学習モデルを使用しており、画像認識の精度は世界トップクラスです。

画像内の情報を文字データに変換するだけでなく、人の表情から感情(喜び・怒り・悲しみ)を検知することも可能です。

料金設定

1ヶ月に1,000回までは無料で利用できます(2019/8/17時点)。もし1,000回を超えた場合であっても、5,000,000 回までは1,000回あたり1.5ドル。20,000,000回までは1,000回あたり0.6ドルと、かなりリーズナブルな料金設定です。

環境設定

Cloud Vision APIの詳しい環境設定についてはこちら → Cloud Vision API 入門ガイド

Google Cloud Vision APIの機能一覧

No. 機能のタイプ 説明
1 ラベルの検知 画像内の情報から、カテゴリー別(建物・乗り物など)に対象物を検知
2 テキストの検知 画像内の情報から、光学式文字認識(OCR)を実行してテキストを検知
3 ドキュメントの検知 画像内の情報から、密度の高いテキスト(ドキュメント)を検知
4 不適切な情報の検知 画像内の情報から、アダルト画像・暴力的な画像などを検知
5 表情の検知 画像内の情報から、人の表情などを検知
6 ランドマークの検知 画像内の情報から、ランドマーク・人工建造物を検知
7 商品ロゴの検知 画像内の情報から、商品ロゴを検知
8 ドミナントカラーの検知 画像内の情報から、ドミナントカラー(配色全体を印象づける色など)を検知
9 類似画像の検知 画像内の情報から、Google 画像検索ので表示される類似画像を検知
10 クロップヒントの検知 画像内の情報から、主要な対象物の周囲を切り抜く境界の座標を検知
11 対象物の検知 画像内の情報から、その画像に含まれる複数の対象物を検知

OCRとは

OCR(光学的文字認識)とは、印刷物や手書きの書類などをスキャナー等を使ってコンピューターに読み込み、文字(テキスト)データに変換する技術のことです。

ハガキ等の郵便番号を読み込んで自動振り分けを行ったり、確定申告や労災・給付申請など、OCRの技術は既に様々な分野で活用されています。

[st-minihukidashi fontawesome=”fa-hand-o-right” fontsize=”90″ fontweight=”bold” bgcolor=”#3F51B5″ color=”#fff” margin=”0 0 0 0″]OCRの精度[/st-minihukidashi]
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”” bgcolor=”#E8EAF6″ borderwidth=”0″ borderradius=”5″ titleweight=”bold” fontsize=””]

これまで、アルファベットや数字など画数が少ない文字と比べて、日本語のような画数の多い文字(漢字)の認識精度は決して高くありませんでした。ところが最近の人工知能(AI)の進化によって、日本語の画像認識の精度は飛躍的に向上しています。

[/st-mybox]

印刷物(画像)から文字データへの変換

小説の一文を変換してみます(Before)

画像データから文字データへ、ほぼ正確に変換することができました(After)

手書き文字(画像)から文字データへの変換

手書きの挨拶文を変換してみます(Before)

一部、文字データへの変換に失敗しているところもありますが、高い精度(95%)で変換できています(After)

写真(画像)から文字データへの変換

駅の電光掲示板を変換してみます(Before)

文字が小さくて、一部文字データへの変換に失敗しているところもありますが、概ね問題なく文字データに変換できています(After)

解説

import requests
import json
import base64 

API_KEY = "指定のAPIキー"

def text_detection(image_path):
    api_url = 'https://vision.googleapis.com/v1/images:annotate?key={}'.format(API_KEY)
    with open(image_path, "rb") as img:
        image_content = base64.b64encode(img.read())
        req_body = json.dumps({
            'requests': [{
                'image': {
                    'content': image_content.decode('utf-8') 
                },
                'features': [{
                    'type': 'DOCUMENT_TEXT_DETECTION'
                }]
            }]
        })
        res = requests.post(api_url, data=req_body)
        return res.json()

if __name__ == "__main__":
    img_path = 'sample2.jpg' # → 変換したいファイルをここで指定
    res_json = text_detection(img_path)
    res_text = res_json["responses"][0]["textAnnotations"][0]["description"]
    print(res_text)
    with open("result.json", "w") as js:
        js.write(res_text)

まとめ

Google Cloud Vision APIを使うと、Google社の最先端の画像認識技術を利用することができます。

画一的な文字(印刷物・電光掲示板)については、ほぼ100%の精度で文字(テキスト)データに変換することができました。また、手書き文字(画像)についても、一部変換が失敗した箇所もありますが概ね高い精度で変換できました。

今回解説したOCRの技術と、パソコン操作を自動化する技術(PyAutoGUI)を組み合わせることで、紙・文書の読み込み業務を自動化することも可能です。

コメントを残す

メールアドレスが公開されることはありません。