1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの文書画像解析・OCRライブラリ,YomiTokuを試してみる

Posted at

はじめに

Pythonで利用できるKotaro Kinoshita氏開発のOCRライブラリ,「YomiToku」が公開されていたので軽く触りつつ使い方をまとめてみます.

YomiTokuとは

簡単な説明

  • 日本語の文書画像解析に特化したPyhonのOCRライブラリ
  • ローカルサーバーでPDFや文書画像の解析・表の構造解析・レイアウト解析が可能
  • 解析結果はHTML・CSV・JSON・Markdownといった形式でエクスポート可能
  • 2024年12月3日現在,非商用での個人利用・研究目的の利用は自由(商用利用は別ライセンスのため要相談)

GitHubリポジトリ

実際に使ってみる

Google Colabで実行します

YomiTokuのインストール

!pip install yomitoku

文書画像の準備

適当な文書画像を準備し,sample.jpgという名前でGoogle Colabにアップロードします.
image.png

  • sample.jpg
    sample.jpg

実行方法

公式ドキュメントによると,以下のコマンドで実行できるようです.

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

OCRの実行

今回はMarkDownファイルで出力してみます.

!yomitoku /content/sample.jpg -f md -o results -v --figure
2024-12-03 03:14:55,710 - yomitoku.base - INFO - Initialize TextDetector
2024-12-03 03:14:56,470 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead.
・
・
・
2024-12-03 03:16:19,539 - yomitoku.cli.main - INFO - Output file: results/content_sample_p1.md
2024-12-03 03:16:19,541 - yomitoku.cli.main - INFO - Total Processing time: 79.42 sec

大体80秒ほどかかりました.

実行結果

  • content_sample_p1.md
      ·土·日曜日·夏休みは遅休です。
      
      |元 地||||||||||
      |-|-|-|-|-|-|-|-|-|-|
      |||7:17||9:12|11:22|||15:45|17:30|
      |病院 前||7:26||9:21|11:31|||15:54|17:39|
      |フェリーターミナル着||7:27||9:22|11:32|||15:55|17:40|
      
      |香深~桃岩登山口~香深 5/1~9/15まで||||
      |-|-|-|-|
      |停\便|1|2|3|
      |フェリーターミナル発|8:40|11:34|13:25|
      |病 院 前|8:41|11:35|13:26|
      |着発<br>桃岩登山口|8:48|11:42|13:33|
      ||8:50|11:44|13:35|
      |病院 前|8:57|11:51|13:42|
      |フェリーターミナル着|8:58|11:52|13:43|
      
    

    image.png

  • content_sample_p1_layout.jpg
    content_sample_p1_layout.jpg

  • content_sample_p1_ocr.jpg
    content_sample_p1_ocr.jpg

「香深〜桃岩登山口〜香深」の「〜」を半角チルダと認識したことでマークダウンのレイアウトが若干崩れてしまっていますが,かなり高い精度で文字の認識ができています.

特に「フェリーターミナル」は半角に近いサイズの文字であるにもかかわらず問題なく認識できています.すごい.

おわりに

今回そこそこトリッキーなレイアウトの文書の解析を行いましたが,かなり精度良く文字の認識ができていました.今後はPDF出力された文書ファイルのレイアウト解析なんかで積極的に使ってみようと思います.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?