日本語に特化したAI OCR「YomiToku」で複雑なレイアウトの文書を解析する

[YomiToku](https://github.com/kotaro-kinoshita/yomitoku)は日本語に特化して学習したAI OCRです。Pythonパッケージとして公開されており、インストールすればCLIで簡単にOCR解析が可能です。

YomiTokuの特徴として、複雑なレイアウトの文書の解析が挙げられます。本記事では、その実力を紹介します。

## YomiTokuのセットアップ

YomiTokuは `pip` でインストールします。

```bash
pip install yomitoku
```

ONNX Runtimeの実行にGPUを利用する場合は、以下のコマンドになります。

```bash
pip install yomitoku[gpu]
```

### 注意点

pytorchはCUDAのバージョンに合わせて選択してください。デフォルトではCUDA12.4以上を想定してインストールされます。また、pytorch自身は2.5以上のバージョンが必要です。[Dockerfile](https://github.com/kotaro-kinoshita/yomitoku/blob/main/dockerfile)もあります。

## 今回の文書

今回は特許庁にて配布されている「[とっきょ 62号](https://www.jpo.go.jp/news/koho/kohoshi/back/index.html#backnumber_vol62)」を使わせていただきました。PDFを見ると分かりますが、写真や横書き、縦書き、表などが組み合わされた内容となっています。

今回はその中でも、最初の2〜3ページ目について解析しています。2ページ目は縦書きが多くなっています。

![tokkyo_62.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/4f45f9a8-1c9e-4148-b72f-6dfae61b1671.jpeg)

3ページ目には表があります。

![tokkyo_62 2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/8df39199-eb1b-4530-8b78-b41f59119f0d.jpeg)


## OCR処理を行う

### ファイルを配置する

解析対象になるファイルを用意します。今回はPDFファイルを `docs` フォルダ以下に保存しています。

### 解析を実行する

以下のコマンドで解析を実行します。

```bash
# HTMLファイルを出力
yomitoku ./docs -f html
# JSONファイルを出力
yomitoku ./docs -f json
# Markdownファイルを出力
yomitoku ./docs -f md
# CSVファイルを出力
yomitoku ./docs -f csv
```

コマンドを実行すると、最初にモデルをダウンロードします。これは自動的に行われ、初回のみです。

```bash
model.safetensors: 100% 102M/102M [00:02<00:00, 42.4MB/s]
model.safetensors: 100% 200M/200M [00:04<00:00, 42.7MB/s]
model.safetensors: 100% 172M/172M [00:04<00:00, 37.0MB/s]
model.safetensors: 100% 172M/172M [00:04<00:00, 41.2MB/s]
```

そして解析を実行し、 `results` ディレクトリに結果が出力されます。出力先フォルダは変更可能で、なければ自動で作成されます。

```bash
yomitoku.cli.main - INFO - Total Processing time: 4.81 sec
```

## 解析結果

### 縦書きの解析

以下はMarkdown出力の結果です。

```markdown
# PART1

# ドローン物流の新市場を創出し<br>未来の社会を<br>見通す 知財経営

Next MOBILITY®:「空飛ぶゴンドラ」を具現化したVTOL\(垂直離着陸機\)

# FEATURE

# 特許技術「4D GRAVITY®

「4D GRAVITY®」は、飛行部と搭載部を分離させて「貫通<br>ジンバル構造」でつなぎ、安定した重心制御を実現する機体<br>構造設計技術です。ドローンの基本性能全般の向上に資する<br>だけでなく、多様な産業用ドローンの機体フレームに活用で<br>きます。当社は、空撮·物流·点検·測量·警備などさまざ<br>まな用途を想定して、4D GRAVITY®を搭載した「Next」シ<br>リーズの技術開発をしています。特に、人を運ぶドローン「Next<br>MOBILITY®」の試作品開発まで到達したことで、重心制御<br>技術を使ったドローンのひとまずの究極形を示せたのではと<br>考えています。
```

Markdownできちんと構造化できていますので、HTMLでも同じように構造化された状態で出力されています。

JSONの場合は `box` が追加されています。これは認識された座標（左上と右下のX/Y座標）が入っています。

```json
{
    "figures": [
        {
            "box": [
                10,
                0,
                1527,
                790
            ],
            "direction": "horizontal",
            "order": 0,
            "paragraphs": [
                {
                    "box": [
                        51,
                        43,
                        373,
                        73
                    ],
                    "contents": "特集 知財が運ぶ ひと·モノ·未来",
                    "direction": "horizontal",
                    "order": 0,
                    "role": "page_header"
                },
                : 以下略
```

`-v` を付けると、解析した際のレイアウトや認識された部分の出力も行えます。出力された画像を見ると、正しく認識されているのが確認できます。

![images_tokkyo_62_p1_layout.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/af00e2c2-3077-42db-9e36-504ed6bcfefd.jpeg)


### 表の解析

3P目にあった表も正しく認識されています。以下はMarkdownでの解析結果（一部）です。

```markdown
|ビジネスの基本戦略|知財戦略|具体的施策や成果|
|-|-|-|
|理想は「戦わずして勝つ」<br>~市場を独占するストーリーの構築|\*特許から新産業の10~20年先の未来像を見抜く<br>~「へそ」となる中核のテクノロジーを見極める<br>\*特許を、製品や技術を最速で普及させる手段として活用|▲2017年、DRONEiPLAB \(IP管理会社\)を<br>共同創業<br>▲2017年、エアロネクストと資本·業務提携<br>~重心制御の技術「4D GRAVITY®」の基本特許取得|
|「大企業の参入」を<br>予期しておく<br>~市場の拡大には不可欠のフェーズ|\* 資本力などで劣るスタートアップは 特許など知財で対抗<br>~先行者のアドバンテージ、大企業と交渉する切り札<br>~基本特許から押さえる、「相手の戦意を喪失させる」知財戦略|▲「4D GRAVITY®」の特許ポートフォリオ構築<br>~広汎な領域を押さえつつ、コア部分を厚くする|
|スタートアップの存在意義は<br>事業価値の創造<br>~独自技術の価値最大化のため知財戦略が必要|\* 経営者が ROE との関係性を語れるようになる<br>\* CIPO など、知財パーソンが経営で活躍できる<br>環境を充実させる|▲エアロネクスト社内の知財活動体制<br>~田路代表取締役CEO がグランドデザインし、<br>専門チームが特許を取得|
|「正解」はマーケットが<br>知っている<br>~市場が確立する前の設備投資はハイリスク<br>~多様なパートナーを選択肢として持つ|\*最初はファーストライセンシーと市場を創ることに集中<br>~デファクトスタンダード化<br>\*市場が拡大してきたらセカンドライセンシー以降に展開<br>~市場の成長を加速させる|▲2020年、ACSLとライセンス契約締結<br>~物流専用ドローン「AirTTuck」共同開発<br>▲2024年、プロドローンにライセンス提供開始<br>~置き配機能を持った新機体の開発を推進|
```

改行が含まれているセルが、きちんと `<br>` タグを入れる形で文脈を保ったまま認識されているのが確認できます。これはHTML/JSON/CSVのいずれも同様です。

3ページ目の認識レイアウトです。セルごとに枠が表示されているのが確認できます。

![images_tokkyo_62_p2_layout.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/66060b16-878f-4d4a-b32c-720a5ad00567.jpeg)


## YomiTokuの特徴

YomiTokuの特徴は、以下の通りです。

### AIを活用

YomiTokuでは、以下の4種類のAIモデルを搭載しています。

- 文字位置の検知
- 文字列認識
- レイアウト解析
- 表の構造認識

いずれも日本語データセットで学習しています。

### 日本語、英語に対応

日本語の文書画像に特化して学習しており、日本の商習慣で使われる複雑な表であったり、縦書き文書にも対応しています。7,000文字を超える大規模な日本語文書でも利用できます。

### レイアウト解析・表の構造認識

段組や、帳票や書面の中で使われている表の構造認識ができ、レイアウトの意味的構造を正しく認識、情報を抜き出します。

### 多様な出力フォーマット

出力は以下の4フォーマットに対応しています。

- Markdown
- JSON
- HTML
- CSV

システム連携も容易なJSON、見やすいMarkdown、表計算ソフトでの利用に便利なCSVなど、用途に合わせて使い分けることができます。

### セキュリティ

クラウドサービスではないので、自社サーバー内に閉じた環境下で解析できます。請求データなど、機密情報を取り扱う上でも安心です。

### GPU利用

GPU環境下で高速に動作します。VRAMは8GB以内で動作しますので、ハイエンドなGPUでなくても利用できます。

## 注意点

### CPUでの利用について

YomiTokuはGPUでの利用を推奨していますが、CPU環境下でも実行は可能です。ただし、解析には数分かかるので注意してください。

### 手書き文字について

2025年2月現在のYomiTokuでは、活字のみサポートしています。手書き文字については、公式にはサポートしておりません。また、看板など紙以外にプリントされた情景OCRについては、最適化されていません。

### 画像サイズについて

低解像度画像では識別精度が低下します。画像の短辺を720px以上の画像で解析することを推奨します。

## ライセンス

YomiTokuのライセンスは[コモンズ証 \- 表示 \- 非営利 \- 継承 4\.0 国際 \- Creative Commons](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ja)です。非商用での個人利用、研究目的においては、ご自由に利用できます。商用目的での利用に関しては、商用ライセンスが必要です。

## まとめ

今回は、YomiTokuにおける複雑なレイアウトの文書解析機能について解説しました。他のOCRでは難しいようなレイアウトでも、YomiTokuを使えば簡単に情報が取得できます。既存資産のデジタル化、帳票のデータ解析・自動化にぜひお使いください。

[kotaro\-kinoshita/yomitoku: Yomitoku is an AI\-powered document image analysis package designed specifically for the Japanese language\.](https://github.com/kotaro-kinoshita/yomitoku?tab=readme-ov-file)