レイアウト解析

はじめに

ある業務でファイルのレイアウト解析を行うことになった。その際に検証したPythonライブラリ「Layout-Parser」の使い方を説明する。

インストール

今回の動作検証は、Windows11のWSL(Ubuntu-22.04)上で行った。また、Pythonの仮想環境はpyenv+poetryを用いて構築した。インストール時の一連のコマンドは以下の通りである。

一番最後にインストールしているdetectron2については、poetryを用いたインストール方法が分からなかったのでpipで行った。Layout-Parserの詳細は、こちらを見てほしい。

コード

さて、サンプルコードにある以下のコードを実行してみる。

すると以下のエラーが出る。

このエラーについてググるといくつかヒットするページがある。今回は以下のように解決した。どのサイトを参考にしたのかはうかつにも記録に残していなかったので不明である。

  1. ~/.torch/iopath_cache/s/dgy9c10wykk4lq4の下にある訓練済みモデル(ダウンロードされたもの)「’model_final.pth?dl=1’」をコピーして「model_final.pth」を同じフォルダ内に作る。
  2. ここにアクセスし、上のモデルに対応するyamlファイルをダウンロードする。
  3. 以下のコードに置き換える。

これで動くようになる。検証に使ったコードは以下の通り。

結果

今回使用した訓練済みモデルは、ファイル内から以下の領域を検出する。

  • TextRegion(赤)
  • ImageRegion(緑)
  • TableRegion(青)
  • MathsRegion(黄)
  • SeparatorRegion(マジェンタ)
  • OtherRegion(シアン)

最近話題になった論文「BitNet b1.58」の数ページをレイアウト分析した結果を示す。


結果を見渡すと

  • テキスト領域(赤色)は概ね取れている。
  • 上段右図では数式(黄色)が取れている。
  • 下段左図からはグラフがOtherRegion(シアン)として取れている。
  • 下段右図からは表(青色)が取れている
  • 上段左図と下段右図にある太い横棒がセパレータ(マジェンタ)として取れている。

かなり精度良く各領域が取れていると思う。

まとめ

今回は、業務関係で検証したPythonライブラリ「Layout-Parser」を紹介した。ライセンスがApache License 2.0なので商用利用は可能である。

参照サイト

Kumada Seiya

Kumada Seiya

仕事であろうとなかろうと勉強し続ける、その結果”中身”を知ったエンジニアになれる

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP