高密度ドキュメントのテキスト検出のチュートリアル

オーディエンス

このチュートリアルの目的は、Google Cloud Vision API のドキュメント テキスト検出機能を使用してアプリケーションを開発する方法を学ぶことです。このチュートリアルは、基本的なプログラミング構成やテクニックの知識があることを前提としていますが、プログラミングの初心者の方にも簡単に操作できるように設計されています。Cloud Vision API リファレンス ドキュメントを参照しながらチュートリアルに従うことで、基本的なアプリケーションを作成できるようになります。

前提条件

Python

ドキュメント テキスト OCR を使用して画像にアノテーションを付ける

このチュートリアルでは、DOCUMENT_TEXT_DETECTION リクエストを使用して fullTextAnnotation レスポンスを処理する基本的な Vision API アプリケーションについて段階的に説明します。

fullTextAnnotation は、画像から抽出された UTF-8 テキストを階層構造で表現したレスポンスで、ページ→ブロック→段落→語→記号のように編成されています。

  • Page は、ブロックの集まりに、ページについてのメタ情報、つまりサイズ、解像度(X 解像度と Y 解像度が違う場合がある)を付加したものです。

  • Block は、ページの「論理的」要素の一つを表します。たとえば、テキストで埋め尽くされている領域や、列と列の間にある図や区切りなどです。テキスト ブロックとテーブル ブロックには、テキスト抽出に必要な主要な情報が含まれています。

  • Paragraph は、順序付けられた単語列を表すテキストの構造単位です。デフォルトで単語は、単語区切りで区切られているものとみなされます。

  • Word は、テキストの最小単位です。これは、記号の配列として表記されます。

  • Symbol は、文字または句読点記号を表します。

また、fullTextAnnotation は、リクエスト中の画像に部分一致または完全一致するウェブ画像を参照する URL を示すこともあります。

完全なコードリスト

Cloud Vision API Python リファレンス を参照しながらコードを読み進めることをおすすめします。

import argparse
from enum import Enum

from google.cloud import vision
from PIL import Image, ImageDraw



class FeatureType(Enum):
    PAGE = 1
    BLOCK = 2
    PARA = 3
    WORD = 4
    SYMBOL = 5


def draw_boxes(image, bounds, color):
    """Draws a border around the image using the hints in the vector list.

    Args:
        image: the input image object.
        bounds: list of coordinates for the boxes.
        color: the color of the box.

    Returns:
        An image with colored bounds added.
    """
    draw = ImageDraw.Draw(image)

    for bound in bounds:
        draw.polygon(
            [
                bound.vertices[0].