Skip to content

Commit

Permalink
Merge pull request #32 from kotaro-kinoshita/feature/export-figures
Browse files Browse the repository at this point in the history
feature export figures
  • Loading branch information
kotaro-kinoshita authored Nov 19, 2024
2 parents 8502d31 + 446525d commit 9e18de8
Show file tree
Hide file tree
Showing 71 changed files with 733 additions and 634 deletions.
61 changes: 38 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,47 @@

## 🌟 概要

YomiToku は日本語の文書画像解析に特化した AI ベースの文章画像解析エンジンです。画像内の文字の全文 OCR およびレイアウト解析機能を有しており、画像内の文字情報や図表を抽出、認識します。
YomiToku は日本語の文書画像解析に特化した AI ベースの文章画像解析エンジン(Document AI)です。画像内の文字の全文 OCR およびレイアウト解析機能を有しており、画像内の文字情報や図表を抽出、認識します。

- 🤖 日本語データセットで学習した 4 種類(文字位置の検知、文字列認識、レイアウト解析、表の構造認識)の AI モデルを搭載しています。4 種類のモデルはすべて独自に学習されたモデルです。
- 🇯🇵 各モデルは日本語の文書画像に特化して学習されており、7000 文字を超える日本語文字の認識をサーポート、縦書きなど日本語特有のレイアウト構造の文書画像の解析も可能です
- 📈 レイアウト解析、表の構造解析機能により、文書画像のレイアウト構造を可能な限り維持した状態で、情報を抽出することが可能です。
- 📄 多様な出力形式をサポートし、html やマークダウン、json、csv のいずれかのフォーマットに変換し、出力可能です。
- 🤖 日本語データセットで学習した 4 種類(文字位置の検知、文字列認識、レイアウト解析、表の構造認識)の AI モデルを搭載しています。4 種類のモデルはすべて独自に学習されたモデルで日本語文書に対して、高精度に推論可能です。
- 🇯🇵 各モデルは日本語の文書画像に特化して学習されており、7000 文字を超える日本語文字の認識をサーポート、縦書きなど日本語特有のレイアウト構造の文書画像の解析も可能です。(日本語以外にも英語の文書に対しても対応しています)。
- 📈 レイアウト解析、表の構造解析, 読み順推定機能により、文書画像のレイアウトの意味的構造を壊さずに情報を抽出することが可能です。
- 📄 多様な出力形式をサポートしています。html やマークダウン、json、csv のいずれかのフォーマットに変換可能です。また、文書内に含まれる図表、画像の抽出の出力も可能です。
- ⚡ GPU環境で高速に動作し、効率的に文書の文字起こし解析が可能です。また、VRAMも8GB以内で動作し、ハイエンドなGPUを用意する必要はありません。

## 🖼️ デモ

[gallery.md](gallery.md)にも複数種類の画像の検証結果を掲載しています。

| 入力画像 | OCR |
| 入力画像 | OCRの結果 |
| :--------------------------------------------------: | :------------------------------------------------: |
| <img src="static/in/demo.jpg" width="400px"> | <img src="static/out/demo_ocr.jpg" width="400px"> |
| レイアウト解析 | エクスポート |
| <img src="static/out/demo_layout.jpg" width="400px"> | <img src="static/out/demo_html.png" width="400px"> |
| <img src="static/in/demo.jpg" width="400px"> | <img src="static/out/in_demo_p1_ocr.jpg" width="400px"> |
| レイアウト解析の結果 | エクスポート<br>(HTMLで出力したものをスクショ) |
| <img src="static/out/in_demo_p1_layout.jpg" width="400px"> | <img src="static/out/demo_html.png" width="400px"> |

Markdown でエクスポートした結果は関してはリポジトリ内の[demo.md](demo.md)を参照

- `赤枠` : 図、画像等の位置
- `緑枠` : 表領域全体の位置
- `ピンク枠` : 表のセル構造(セル上の文字は [行番号, 列番号] (rowspan x colspan)を表します)
- `青枠` : 段落、テキストグループ領域
- `赤矢印` : 読み順推定の結果


画像の出典:[「令和 6 年版情報通信白書 3 章 2 節 AI の進化に伴い発展するテクノロジー」](https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r06/pdf/n1410000.pdf):(総務省) を加工して作成

## 📣 リリース情報

- 2024 年 12 月 XX vX.X.X をリリース
- 2024 年 12 月 XX YomiToku vX.X.X を公開

## 💡 インストールの方法

```
pip install --index-url https://test.pypi.org/simple/ yomitoku
```

- pytorchがご自身のGPUの環境にあったものをインストールしてください

### 依存ライブラリ

pdf ファイルの解析を行うためには、別途、[poppler](https://poppler.freedesktop.org/)のインストールが必要です。
Expand All @@ -57,39 +67,44 @@ apt install poppler-utils -y
## 🚀 実行方法

```
yomitoku ${path_data} -f md -o results -v -d cpu
yomitoku ${path_data} -f md -o results -v --figure
```

- `${path_data}` 解析対象の画像が含まれたディレクトリか画像ファイルのパスを直接して指定してください。ディレクトリを対象とした場合はディレクトリのサブディレクトリ内の画像も含めて処理を実行します。
- `-f` 出力形式のファイルフォーマットを指定します。(json, csv, html, md をサポート)
- `-o` 出力先のディレクトリ名を指定します。存在しない場合は新規で作成されます。
- `-v` を指定すると解析結果を可視化した画像を出力します。
- `-d` モデルを実行するためのデバイスを指定します。gpu が利用できない場合は cpu で推論が実行されます。(デフォルト: cuda)
- `-f`, `--format` 出力形式のファイルフォーマットを指定します。(json, csv, html, md をサポート)
- `-o`, `--outdir` 出力先のディレクトリ名を指定します。存在しない場合は新規で作成されます。
- `-v`, `--vis` を指定すると解析結果を可視化した画像を出力します。
- `-d`, `--device` モデルを実行するためのデバイスを指定します。gpu が利用できない場合は cpu で推論が実行されます。(デフォルト: cuda)
- `--ignore_line_break` 画像の改行位置を無視して、段落内の文章を連結して返します。(デフォルト:画像通りの改行位置位置で改行します。)
- `figure_letter` 検出した図表に含まれる文字も出力ファイルにエクスポートします。
- `figure` 検出した図、画像を出力ファイルにエクスポートします。(htmlとmarkdownのみ)

その他のオプションに関しては、ヘルプを参照
```
yomitoku --help
```

### Note

- CPU を用いての推論向けに最適化されておらず、処理時間が長くなりますので、GPU での実行を推奨します。
- 活字のみ識別をサポートしております。手書き文字に関しては、読み取れる場合もありますが、公式にはサポートしておりません。
- OCR は文書 OCR と情景 OCR(看板など紙以外にプリントされた文字)に大別されますが、Yomitoku は文書 OCR 向けに最適化されています。
- AI-OCR の識別精度を高めるために、入力画像の解像度が重要です。低解像度画像では識別精度が低下します。画像の短辺を 1000px 以上の画像で推論することをお勧めします。
- AI-OCR の識別精度を高めるために、入力画像の解像度が重要です。低解像度画像では識別精度が低下します。最低でも画像の短辺を 720px 以上の画像で推論することをお勧めします。

## 📝 ドキュメント

パッケージの詳細は[ドキュメント](https://kotaro-kinoshita.github.io/yomitoku-dev/)を確認してください。

## 🔥 開発予定

YomiToku は現在も開発中であり、今後以下のような機能の拡張を目指しています。
## LICENSE

- 文章の読み順推定機能
本リポジトリ内に格納されているリソースのライセンスはYomiTokuはCC BY-NC 4.0に従います。
非商用での個人利用、研究目的での利用は自由に利用できます。
商用目的での利用に関しては、別途、商用ライセンスを提供しますので、開発者にお問い合わせください。

段組など複雑なレイアウトが与えられた場合にエクスポート時に読み取り順序が意図しない結果となる課題があります。段落ごとの読み順を推定し、文書が自然な並びで再構成できるように読み順推定モデルを構築する予定です。

## LICENSE

YomiToku © 2024 by MLism inc. is licensed under CC BY-NC 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc/4.0/


## 🙏 謝辞

YomiToku 内に搭載されているモデルは以下のオープンソース AI を参考し、開発しています。開発者の皆様に感謝申し上げます
Expand Down
Loading

0 comments on commit 9e18de8

Please sign in to comment.