はじめに
YomiToku は、日本語文書に特化した Document AIエンジンです。
単なる文字起こしに留まらず、意味構造を壊さずに以下のようなものを抽出できる点が最大の特徴です。


出典:経済産業省ウェブサイト
https://www.meti.go.jp/publication/pdf/pamph_boeki.pdf
Marketplace 版の特徴
YomTtokuには以下の2種類があります
・YomiToku:通常盤、無料
・YomiToku-Pro:MarketPlace版、有料
Yomitoku-Proの特徴は以下の通りです。
・商用利用可能
・手書き認識の精度向上
・使用回数の制限がない
Marketplace版の契約・利用の流れ
ここでは、MarketPlace版であるYomitoku-Proの利用方法について記載します。
YomiToku-Proの利用には、AWS SageMaker上で提供されるYomiToku-Pro APIの出力を扱うためのPythonクライアントライブラリであるYomiToku-Clientを使用します。
導入の流れ(2ステップ)
全体の流れは非常にシンプルです。
①AWS Marketplaceでの契約: AWSアカウントに利用権を紐付けます。
②SageMakerエンドポイントの作成: YomiToku-Proを動かす「専用サーバー」を起動します。
各項目について以下で詳しく解説します。
①AWS Marketplaceでの契約
-
まず、AWS MarketplaceのYomiToku-Pro製品ページにアクセスします。
-
Continue to Subscribe をクリック。
-
規約を確認し、Accept Terms を選択します。
-
処理が完了すると、自身のAWSアカウントでYomiToku-Proが利用可能になります。
②SageMakerエンドポイントの作成
契約が完了したら、実際に解析を行う「エンドポイント(APIサーバー)」を構築します。
*設定のポイント
・モデルパッケージ: Marketplaceから取得した最新のYomiToku-Proモデルを指定します。
・インスタンスタイプ: 処理量に合わせて選択します(例: ml.g4dn.xlarge など)。
・エンドポイント名: 後でPythonコードから指定するため、分かりやすい名前を付けておきます。
yomitoku-client のセットアップ
インストール
pip install yomitoku-client
実装例
「pdfを読み込んで結果をcsvで保存する例」
from yomitoku_client import YomitokuClient, parse_pydantic_model
ENDPOINT_NAME = "my-endpoint" # SageMakerのエンドポイント名を指定します
AWS_REGION = "ap-northeast-1" # エンドポイントを立ち上げたAWS REGIONを指定します
target_file = "sample/image.pdf"
with YomitokuClient(
endpoint=ENDPOINT_NAME,
region=AWS_REGION,
) as client:
# 非同期呼び出し
model = await client.analyze_async(
target_file,
model = parse_pydantic_model(model)
out = model.to_csv(output_path="sample.csv")
コマンドを利用する場合
・1つのファイルだけを解析したい場合
yomitoku-client single ${path_file} -e ${endpoint} -p ${profile_name} -f json
*${path_file}: 解析したいPDFや画像ファイルのパスです。
*-e ${endpoint}: AWS上のどのサーバー(SageMakerエンドポイント)を使うか指定します。
*-p ${profile_name}: AWSの接続設定(プロファイル)を指定します。
*-f json: 結果を JSON形式 で画面に表示します。データとして二次利用したい場合に便利です。
・複数のファイルをまとめて解析したい場合
yomitoku-client batch -i ${input_dir} -o ${output_dir} -e ${endpoint} -p ${profile_name} -f md
-i ${input_dir}: 解析したいファイルが詰まっている入力フォルダを指定します。
-o ${output_dir}: 解析結果を保存する出力先フォルダを指定します。
-f md: 結果を Markdown形式(.md) で保存します。
Marketplace 版の JSON 構造解説
一般的なOCRは「どの座標に何の文字があるか」を返すだけですが、YomiToku-Proは違います。 今回、実際の解析結果(JSON)をもとに、このYomiToku-Proがどのように文書を「理解」しているのかを解説します。
paragraphsの仕様
| 項目 | 意味 |
|---|---|
| box | バウンディングボックス。[x1, y1, x2, y2] の形式で、段落全体を囲む矩形座標を示す。[x1, y1]が左上の座標、[x2, y2]が右下の座標。 |
| contents | テキストの内容 |
| direction | テキストの向き(垂直or水平) |
| order | 読み取りの順番 |
| score | 文書内のレイアウト要素が正しく検出された確からしさを示す信頼度スコア。1に近いほど信頼度が高い。 |
| role | 文書の中での役割 (例) section_headings:セクションごとの見出し page_header:ページごとのヘッダー page_footer:ページごとのフッター(注釈、出典など) list_item:箇条書きにおける各テキスト index:索引 |
wordsの仕様
| 項目 | 意味 |
|---|---|
| points | バウンディングボックスの4つの頂点の座標。[x1, y1], [x2, y2], [x3, y3], [x4, y4]のような形式。左上の座標([x1, y1])から時計回りに座標を表示。 |
| content | 認識された文字列本体 |
| det_score (Detection Score) | テキスト検出モデルの信頼度スコア。1に近いほど信頼度が高い。 |
| rec_score (Recognition Score) | テキスト認識モデルの信頼度スコア。1に近いほど信頼度が高い。 |
tablesの仕様
| 項目 | 意味 |
|---|---|
| row | セルが属する行番号 |
| col | セルが属する列番号 |
| cols | 表内の各列の位置および境界を定義する列情報の配列 |
| rows | 表内の各行の位置および境界を定義する行情報の配列 |
| score | 表の区切り線(行または列)が正しく検出されていることに対する信頼度を示す数値。1に近いほど信頼度が高い。 |
| cells | 表を構成する各セルの情報を保持する配列 |
| row_span/col_span | いくつのセルが結合しているかを数字で出力。Excelなどの「セル結合」を正確に再現。row_spanは行方向、col_spanは列方向。 |
preprocessの仕様
| 項目 | 意味 |
|---|---|
| angle | ページ全体の回転補正角度。入力画像に対して推定された回転角度を示す。0.0 は回転補正が不要であることを意味 |
| angle_score | 角度推定の信頼度スコア。1に近いほど信頼度が高い。 |
figuresの仕様
| 項目 | 意味 |
|---|---|
| role | 文書の中での役割 (例) section_headings:セクションの見出し page_header:ページヘッター page_footer:ページフッター caption:図表説明文 code:バーコード logo:文や図表には該当しない、視覚的な識別要素 |
角度補正の例
以下のように90度回転している画像を入力した場合、自動で向きを補正してから文字の読み取りが行われます。
入力画像
出力画像
出典:経済産業省ウェブサイト
https://www.meti.go.jp/publication/pdf/pamph_oshinagaki.pdf
json出力
angle -90.0 JS:-90 # 元画像が反時計回りに90度回転していたことを意
angle_score 0.9999910593032837
まとめ
本記事では、日本語文書に特化した Document AI エンジン YomiTokuサービスについて、Marketplace版の契約から利用方法、さらに JSON 出力構造の中身までをひと通り解説しました。
従来のOCRで人手や追加ロジックが必要だったレイアウト理解・表構造の復元・文書要素の役割判定を手軽に行うことできます。
日本語文書を大量に扱う業務ほど、YomiToku-Proの導入効果は大きくなるでしょう。