Layout Parser とは
ドキュメント画像を分析して、レイアウト(ここはテキスト、ここは画像、のような感じ)を検出してくれるやつです。
https://github.com/Layout-Parser/layout-parser
この記事の位置づけ
Layout Parser をWindowsで使うのに、一筋縄ではいかない状態なのだが、その回避方法が断片的に散らばってたのでまとめてみる。
基本的なインストール方法は本家のここに書かれている。
Windowsへのインストールに関してはもごもごしている。
Layout Parserのインストール
LayoutParser ライブラリをインストールする
まずは、本体をインストール
pip install layoutparser
Detectron2 レイアウト モデル バックエンドをインストールする
このDetectoron2をwindowsにインストールするのを躓いている人が多い(俺も)。
以下のサイトを参考に進めた。
Install Cython and COCO Tools
pip install cython
pip install pycocotools
Install Detectron2
detectron2を落としてくる。
git clone https://github.com/facebookresearch/detectron2.git
コードの修正
detectron2/setup.py
の75~87行目あたりに以下を追記します。
(行番号は新しいバージョンでは変更される可能性があります)
if not is_rocm_pytorch:
define_macros += [("WITH_CUDA", None)]
extra_compile_args["nvcc"] = [
"-O3",
"-DCUDA_HAS_FP16=1",
"-D__CUDA_NO_HALF_OPERATORS__",
"-D__CUDA_NO_HALF_CONVERSIONS__",
"-D__CUDA_NO_HALF2_OPERATORS__",
"-allow-unsupported-compiler", # この行を追加
]
else:
define_macros += [("WITH_HIP", None)]
extra_compile_args["nvcc"] = [
"-allow-unsupported-compiler", # この行を追加
]
detectron2/setup.py
の最後226~227行目あたりをコメントアウトする。
(行番号は新しいバージョンでは変更される可能性があります)
# ext_modules=get_extensions(),
# cmdclass={"build_ext": torch.utils.cpp_extension.BuildExtension},
インストールを実行する。
pip install -e detectron2
iopath を修正する
このままでは、モデルを読み込む際にエラーが発生する。原因はiopath
というライブラリのようです。
iopathを落としてくる
git clone https://github.com/facebookresearch/iopath
コードの修正
iopath/iopath/common/file_io.py
の924行目あたりを書き換えます。
(行番号は新しいバージョンでは変更される可能性があります)
# filename = path.split("/")[-1]
filename = parsed_url.path.split("/")[-1] # 書き換え
インストールを実行する。
pip install -e iopath
OCR対応
tesseractをインストールする
最新のインストーラーをダウンロードしてきてインストールする。
layoutparser[ocr]
をインストールする。
pip install layoutparser[ocr]
以下のサイトから言語ファイルを落としてくる。
日本語の場合、jpn.traineddata
をダウンロードし、tesseractのインストールフォルダ(C:\Program Files\Tesseract-OCR\tessdata)に保存する。
以上
まとめ
コンパイラとかパスとか、OS依存なところはまだまだなかなかな感じですね。
「自分が問題にぶつかって解決に10分以上使った内容は記事にして書く」という教えに従って書いてみました。ここ最近、ChatGPT等のおかげで10分以上はまることが少なくなりましたが、この記事で誰かのためになれば嬉しいです。