Module Usage¶
Python ライブラリとして YomiToku を利用する場合の利用方法について説明します。
Document Analyzer の利用¶
Document Analyzer は OCR およびレイアウト解析を実行し、それらの結果を統合した解析結果を返却します。段落、表の構造解析、抽出、図表の検知など様々なユースケースにご利用いただけます。
以下の 4 つのモデルがモジュール内で使われます。
- Text Recognizer (文字認識)
- Text Detector (文字検出)
- Layout Parser (レイアウト解析)
- Table Structure Recognizer (表構造認識)
import cv2
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_pdf
if __name__ == "__main__":
PATH_IMGE = "demo/sample.pdf"
analyzer = DocumentAnalyzer(visualize=True, device="cuda")
imgs = load_pdf(PATH_IMGE)
for i, img in enumerate(imgs):
results, ocr_vis, layout_vis = analyzer(img)
results.to_html(f"output_{i}.html", img=img)
cv2.imwrite(f"output_ocr_{i}.jpg", ocr_vis)
cv2.imwrite(f"output_layout_{i}.jpg", layout_vis)
| オプション名 | 型 | 説明 | 補足 |
|---|---|---|---|
visualize |
bool |
処理結果の可視化を行うかどうかを指定します。 | デバッグ用途でない場合は False を推奨します。True の場合、第 2 戻り値に OCR 結果、第 3 戻り値にレイアウト解析結果を返却します。False の場合は None を返却します。 |
device |
str |
処理に用いるデバイスを指定します。 | デフォルトは "cuda" です。GPU が利用できない場合は、自動で "cpu" に切り替わります。 |
configs |
dict |
モジュールの処理のより詳細なパラメータを設定するために利用します。 | 詳細はモデルの詳細設定をご確認ください。 |
DocumentAnalyzer の処理結果のエクスポートは以下に対応しています。
| メソッド | 出力形式 |
|---|---|
to_json() |
JSON 形式 (*.json) |
to_html() |
HTML 形式 (*.html) |
to_csv() |
カンマ区切り CSV 形式 (*.csv) |
to_markdown() |
マークダウン形式 (*.md) |
AI-OCR のみの利用¶
AI-OCR では、テキスト検知と検知したテキストに対して、認識処理を実行し、画像内の文字の位置と読み取り結果を返却します。
以下の 2 つのモデルがモジュール内で使われます。
- Text Recognizer (文字認識)
- Text Detector (文字検出)
import cv2
from yomitoku import OCR
from yomitoku.data.functions import load_pdf
if __name__ == "__main__":
ocr = OCR(visualize=True, device="cuda")
imgs = load_pdf("demo/sample.pdf")
for i, img in enumerate(imgs):
results, ocr_vis = ocr(img)
results.to_json(f"output_{i}.json")
cv2.imwrite(f"output_ocr_{i}.jpg", ocr_vis)
| オプション名 | 型 | 説明 | 補足 |
|---|---|---|---|
visualize |
bool |
処理結果の可視化を行うかどうかを指定します。 | デバッグ用途でない場合は False を推奨します。True の場合、第 2 戻り値に OCR 結果を返却します。False の場合は None を返却します。 |
device |
str |
処理に用いるデバイスを指定します。(指定値: cuda | cpu | mps) |
デフォルトは "cuda" です。GPU が利用できない場合は、自動で "cpu" に切り替わります。 |
configs |
dict |
モジュールの処理のより詳細なパラメータを設定するために利用します。 | 詳細はモデルの詳細設定をご確認ください。 |
OCRの処理結果のエクスポートは JSON 系形式(to_json())のみサポートしています。
Layout Analyzer のみの利用¶
Layout Analyzer では、テキスト検知と検知したテキストに対して、段落、図表の検知および表の構造解析処理 AI を実行し、文書内のレイアウト構造を解析します。
以下の 2 つのモデルがモジュール内で使われます
- Layout Parser (レイアウト解析)
- Table Structure Recognizer (表構造認識)
import cv2
from yomitoku import LayoutAnalyzer
from yomitoku.data.functions import load_pdf
if __name__ == "__main__":
analyzer = LayoutAnalyzer(visualize=True, device="cuda")
imgs = load_pdf("demo/sample.pdf")
for i, img in enumerate(imgs):
results, layout_vis = analyzer(img)
results.to_json(f"output_{i}.json")
cv2.imwrite(f"output_layout_{i}.jpg", layout_vis)
| オプション名 | 型 | 説明 | 補足 |
|---|---|---|---|
visualize |
bool |
処理結果の可視化を行うかどうかを指定します。 | デバッグ用途でない場合は False を推奨します。True の場合、第 2 戻り値にレイアウト解析結果を返却します。False の場合は None を返却します。 |
device |
str |
処理に用いるデバイスを指定します。(指定値: cuda | cpu | mps) |
デフォルトは "cuda" です。GPU が利用できない場合は、自動で "cpu" に切り替わります。 |
configs |
dict |
モジュールの処理のより詳細なパラメータを設定するために利用します。 | 詳細はモデルの詳細設定をご確認ください。 |
LayoutAnalyzerの処理結果のエクスポートは JSON 系形式(to_json())のみサポートしています。
モデルの詳細設定¶
Config を与えることで、より細かい振る舞いを調整できます。モデルに対して、以下のパラメータを設定可能です。
| オプション名 | 型 | 説明 |
|---|---|---|
model_name |
str |
使用するモデルの名前を指定します。 |
path_cfg |
str |
ハイパーパラメータが記述された config ファイルのパスを入力します。 |
device |
str |
推論に使用するデバイスを指定します。(指定値: cuda | cpu | mps) |
visualize |
bool |
可視化処理を実施するかどうかを指定します。 |
from_pretrained |
bool |
Pretrained モデル(学習済みモデル)を使用するかどうかを指定します。 |
infer_onnx |
bool |
PyTorch の代わりに ONNX Runtime を使用して推論するかどうかを指定します。 |
サポートされるモデル名(model_name)¶
| モデルのタイプ | モデル名 |
|---|---|
| Text Recognizer (文字認識) | "parseq", "parseq-small", "parseq-tiny" |
| Text Detector (文字検出) | "dbnet" |
| Layout Parser (レイアウト解析) | "rtdetrv2" |
| Table Structure Recognizer (表構造認識) | "rtdetrv2" |
Config の記述方法¶
Config は辞書形式で与えます。Config を与えることでモデルごとに異なるデバイスで処理を実行したり、詳細のパラメータの設定が可能です。
例えば以下のような Config を与えると、OCR 処理は GPU で実行し、レイアウト解析機能は CPU で実行します。
from yomitoku import DocumentAnalyzer
if __name__ == "__main__":
configs = {
"ocr": {
"text_detector": {
"device": "cuda",
},
"text_recognizer": {
"device": "cuda",
},
},
"layout_analyzer": {
"layout_parser": {
"device": "cpu",
},
"table_structure_recognizer": {
"device": "cpu",
},
},
}
DocumentAnalyzer(configs=configs)
YAML ファイルでのパラメータの定義¶
Config に YAML ファイルのパスを与えることで、推論時の細部のパラメータの調整が可能です。YAML ファイルの例はリポジトリ内のconfigsディレクトリ内にあります。
モデルのネットワークのパラメータは変更できませんが、後処理のパラメータや入力画像のサイズなどは一部変更が可能です。変更可能なパラメータについてはModel Configをご確認ください。
例えば、以下のように Text Detector の後処理の閾値を YAML ファイルに定義し、Config にその YAML ファイルのパスを設定することができます。Config ファイルはすべてのパラメータを記載する必要はなく、変更が必要なパラメータのみの記載が可能です。
text_detector.yamlの記述
以下のように YAML ファイルのパスを Config に格納可能です。