業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【AI・機械学習】
AI

執筆者:Handbook編集部

Cloud Vision OCR APIの概要について

概要

本記事ではGoogle Cloudサービスの1つであるVision APIの1つであるOCR APIについて解説します。

OCR APIとは

Googleが提供しているVision APIの機能の1つで、Googleの学習済みモデルを利用してOCRを行うことができます。OCRとは画像から手書きや印刷された文字の情報を抽出する技術であり、OCR APIでは文字列、個々の単語、それらのテキスト情報の画像上の位置(境界ボックス)を得ることがきます。

また、OCR APIでは2種類のOCRを行うことができます。

  1. TEXT_DETECTION: 看板や道路指標などの一般的な画像から情報を抽出する際に使用します。
  2. DOCUMENT_TEXT_DETECTION: PDFなどのドキュメント画像から情報を抽出する際に使用します。段落や、ページなどの情報も取得可能です。

OCR APIの利用方法

OCR APIはCLIもしくは、PythonやNode.js、Goなど多くの言語から利用可能です。

以下にもっとも簡単なCLIを利用した例を示します。

# ローカルの画像
gcloud ml vision detect-text ./path/to/file.jpg
# GCS上の画像
gcloud ml vision detect-text gs://cloud-samples-data/vision/ocr/sign.jpg

次にPythonからの利用方法を示します。

まず、必要なライブラリをインストールします。

pip install google-cloud-vision

以下はDOCUMENT_TEXT_DETECTIONの例です。

import io
from google.cloud import vision

# Load image.
with io.open('my_image.jpg', 'rb') as f:
    content = f.read()
image = vision.Image(content=content)

response = client.document_text_detection(
        image=image, image_context={"language_hints": ["ja"]}
    )

また、以下のコードを追加するとバウンディングボックスと予測結果、確信度を描写できます。

image = Image.open('my_image.jpg)
for block in response.full_text_annotation.pages[0].blocks:
    for paragraph in block.paragraphs:
        # Filter by confidence.
        if paragraph.confidence < 0.8:
           continue
        bboxes = paragraph.bounding_box.vertices
        s, e = (bboxes[0].x, bboxes[0].y), (bboxes[2].x, bboxes[2].y)
        # Font for mac
        font = ImageFont.truetype("/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc", 32)
        draw = ImageDraw.Draw(image)
        # Make label
        _word = ""
        for word in paragraph.words:
            _word += "".join([symbol.text for symbol in word.symbols])
        # Add confidence to label.
        _word += f"   {paragraph.confidence:.2f}"

        # Draw rectangle and text.
        draw.rectangle((s, e), outline=(0, 255, 0), width=2)
        draw.text((s[0], s[1] - 20), _word, font=font, fill=(36, 255, 12))

所感

ORC APIを利用することで基本的に高精度かつ高速にOCRを行うことができます。 OCR APIがうまく認識できないケースとしては、白飛びしてしまって文字が見えないケースや影によって文字が見えなくなってしまっているケースです。また、本の表紙などでレイアウトが複雑になっている場合には誤検出してしまうことも確認できました。

また、各予測結果には確信度スコアが含まれます。実用化するにあたって、誤検出を避けるため、確信度スコアに適切な値を設定する必要があります。

料金

料金は、月当たりの利用するユニット数、利用するサービスによって変わります。 テキスト検出、ドキュメントテキスト検出であれば、最初の1000ユニットは無料であり、1001〜5000000ユニットまでは1000ユニットあたり1.5であり、それ以降は1.5であり、それ以降は0.6になります。

参照

2025年06月15日に最終更新
読み込み中...