【PaddleOCR-kie】キー情報抽出1:VI-LayoutXLMモデル推論予測(SER+RE)を利用

背景: kie 用に独自のデータセットをトレーニングする前に、md でルーチンを実行したいのですが、md チュートリアルの内容はわかりにくく、同じ内容のマニュアルが複数あります。人の協力。エンジニアリングの分離のためかもしれません。アップデートを考慮すると便利です... 実行する必要があるモデルと操作手順は、異なるフォルダの下の異なる MDS に分散しています... 非常に言葉もなく、初心者には本当に不親切ですXiaobai、それでは、ここで、通常のプロジェクトの使用順序に従って、概要を進めます。

この記事の内容: PP-Structure ドキュメント分析で重要な情報抽出を使用し、XFUND_zh データ セットで VI-LayoutXLM モデルの推論モデルを実行し、推論を実行します。

2023.4.24 更新: PaddleNLP の新しいモデル: UIE は、情報抽出において VI-LayoutXLM よりもはるかに優れたパフォーマンスを発揮するため、VI-LayoutXLM メソッドがコールド パレスに導入されました。
最新かつ優れた UIE モデルについては、この記事を参照してください: https://blog.csdn.net/z5z5z5z56/article/details/130346646

エンジニアリングにおける重要な情報抽出の関連コンテンツ

ここでは、簡単に検索できるように、まず、ppocr プロジェクト内の kie に関連するコンテンツ パスをリストします。この手順は、次の mds から統合されています。

  • (この記事では主にこれを参照しています) 重要な情報の抽出 - クイック スタート マニュアル:.\ppstructure\kie\README_ch.md
  • 重要な情報抽出のプロセス全体のガイド:.\ppstructure\kie\how_to_do_kie.md
  • (独自モデルのトレーニング評価と推論) 重要情報抽出マニュアル md.\doc\doc_ch\kie.md
  • 重要情報抽出アルゴリズム-VI-LayoutXLM.\doc\doc_ch\algorithm_kie_vi_layoutxlm.md
  • 設定ファイルは次の場所にあります。.\configs\kie\vi_layoutxlm\
  • 重要情報抽出データセット説明文書 (FUNSD、XFUND、wildreceipt の 3 種類のデータセットを紹介).\doc\doc_ch\dataset\kie_datasets.md
  • キー情報に自分でラベルを付ける: PPOCRLabel ドキュメント./PPOCRLabel/README_ch.md

この記事の参考

・(この記事は主にこれを指します) PP-構造文書分析 - 重要情報抽出 - クイックスタートマニュアル:.\ppstructure\kie\README_ch.md
主にこのフォルダの内容を使用します
ここに画像の説明を挿入

その他の参考文献: https://blog.csdn.net/m0_63642362/article/details/128894464

理論的な部分

マルチモーダル モデルに基づく重要な情報抽出タスクには、主に 2 つのソリューションがあります。

(1) テキスト検出 + テキスト認識 + 意味的実体認識 (SER)
(2) テキスト検出 + テキスト認識 + 意味的実体認識 (SER) + 関係抽出 (RE)

上記のソリューションの詳細については、重要な情報抽出プロセス ガイドを参照してください。.\ppstructure\kie\how_to_do_kie.md
最初に単一の SER を実行します。

step0、環境準備

事前基本環境のインストールに加えて

git clone https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
pip install -r requirements.txt

さらに、別の文もあります

pip install -r ppstructure/kie/requirements.txt

step1. VI-LayoutXLM 推論モデルをダウンロードして解凍します。

環境構成の詳細についてはここでは説明しません。ブロガーの以前の記事を参照してください。ppocr プロジェクト フォルダーはデフォルトで以下にダウンロードされています。次の表は「
Key .\doc\doc_ch\algorithm_kie_vi_layoutxlm.md
Information Extraction Algorithm-VI-LayoutXLM」からダウンロードされ、推理模型プロジェクトのルート ディレクトリの model という名前のフォルダーに保存されます。

モデル バックボーンネットワーク タスク 設定ファイル ふーむ ダウンロードリンク
VI-レイアウトXLM VI-レイアウトXLM-ベース することが ser_vi_layoutxlm_xfund_zh_udml.yml 93.19% トレーニングモデル/推論モデル
VI-レイアウトXLM VI-レイアウトXLM-ベース RE re_vi_layoutxlm_xfund_zh_udml.yml 83.92% トレーニングモデル/推論モデル

または端末で直接ダウンロードして解凍します

#下载解压ser_vi_layoutxlm_xfund_infer.tar
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_infer.tar
tar -xvf ser_vi_layoutxlm_xfund_infer.tar

#下载解压re_vi_layoutxlm_xfund_infer.tar
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_infer.tar
tar -xvf re_vi_layoutxlm_xfund_infer.tar

ここに画像の説明を挿入
ここに画像の説明を挿入

step2. XFUNDデータセットをダウンロードする

XFUND データセットをダウンロードし、ルート ディレクトリの train_data フォルダーに置き、
ダウンロードして解凍します。

# 准备XFUND数据集,对于推理,这里主要是为了获得字典文件class_list_xfun.txt
mkdir ./PaddleOCR/train_data
wget https://paddleocr.bj.bcebos.com/ppstructure/dataset/XFUND.tar
tar -xf XFUND.tar

train_data と呼ばれる理由は、設定ファイル内のパスと一致しているため、yaml ファイルを変更せずに直接使用するのが便利だからです。
ここに画像の説明を挿入

step3. モデルを使用して予測を行う (PaddleInference に基づく)

PaddleOCR/ppstructor/kie

単一 SER: 意味論的エンティティ認識

以前にダウンロードした SER 推論モデルを使用する

cd ppstructure
python3 kie/predict_kie_token_ser.py \
  --kie_algorithm=LayoutXLM \
  --ser_model_dir=../model/ser_vi_layoutxlm_xfund_infer \
  --image_dir=./docs/kie/input/zh_val_42.jpg \
  --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \
  --vis_font_path=../doc/fonts/simfang.ttf \
  --ocr_order_method="tb-yx"

コピー

python3 kie/predict_kie_token_ser.py  --kie_algorithm=LayoutXLM  --ser_model_dir=../model/ser_vi_layoutxlm_xfund_infer  --image_dir=./docs/kie/input/zh_val_42.jpg  --ser_dict_path=../train_data/XFUND/class_list_xfun.txt  --vis_font_path=../doc/fonts/simfang.ttf  --ocr_order_method="tb-yx"
  • ser_model_dir: モデルフォルダーに置きました。
  • image_dir: 予測される画像
  • ser_dict_path: データセットのリスト ファイルの場所を指します。
  • vis_font_path: フォントフォルダーです

最初の実行ではいくつかのモデルがダウンロードされます
ここに画像の説明を挿入

可視化結果はinfer.txtに対応するppstructure/outputディレクトリに保存されます。
ここに画像の説明を挿入

ここに画像の説明を挿入

SER+RE: 関係抽出

cd ppstructure
  python3 kie/predict_kie_token_ser_re.py \
  --kie_algorithm=LayoutXLM \
  --ser_model_dir=../model/ser_vi_layoutxlm_xfund_infer \
  --re_model_dir=../model/re_vi_layoutxlm_xfund_infer\
  --use_visual_backbone=False \
  --image_dir=./docs/kie/input/zh_val_42.jpg \
  --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \
  --vis_font_path=../doc/fonts/simfang.ttf \
  --ocr_order_method="tb-yx"

コピー

python3 kie/predict_kie_token_ser_re.py --kie_algorithm=LayoutXLM  --ser_model_dir=../model/ser_vi_layoutxlm_xfund_infer --re_model_dir=../model/re_vi_layoutxlm_xfund_infer --use_visual_backbone=False --image_dir=./docs/kie/input/zh_val_42.jpg --ser_dict_path=../train_data/XFUND/class_list_xfun.txt --vis_font_path=../doc/fonts/simfang.ttf --ocr_order_method="tb-yx"

NX ボックスに関する私の推論は遅くなるでしょう
ここに画像の説明を挿入
ここに画像の説明を挿入
RE は一部のコンテンツではまだ比較的弱いです

別のアプローチ (動的グラフベースの予測)

マニュアルには、tools/infer_kie_token_ser.py、事前トレーニング済みモデルを使用した PaddleOCR エンジン、動的グラフに基づく予測を使用したコードもありますが、実際にテストした後、ここで事前トレーニング済みモデルを直接使用しても同じ結果になります
。上記の微調整モデルを使用した場合と同様の効果が得られます。結局のところ、微調整はありません。

#安装PaddleOCR引擎用于预测
pip install paddleocr -U

mkdir pretrained_model
cd pretrained_model
# 下载并解压SER预训练模型
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_pretrained.tar && tar -xf ser_vi_layoutxlm_xfund_pretrained.tar

# 下载并解压RE预训练模型
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_pretrained.tar && tar -xf re_vi_layoutxlm_xfund_pretrained.tar

OCR エンジンを使用してエンドツーエンドの予測結果を取得する場合は、次のコマンドを使用して予測を行うことができます。

予測のみの SER モデル


python3 tools/infer_kie_token_ser.py \
  -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \
  -o Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy \
  Global.infer_img=./ppstructure/docs/kie/input/zh_val_42.jpg

SER + RE モデルの連結

python3 ./tools/infer_kie_token_ser_re.py \
  -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \
  -o Architecture.Backbone.checkpoints=./pretrained_model/re_vi_layoutxlm_xfund_pretrained/best_accuracy \
  Global.infer_img=./train_data/XFUND/zh_val/image/zh_val_42.jpg \
  -c_ser configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \
  -o_ser Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy

(後続のトレーニング セッションに含まれます) マークされたテキストの検出および認識結果をロードする場合は、次のコマンドを使用して予測のみを行うことができます。
SER モデルのみを予測します
python3 tools/infer_kie_token_ser.py \ -c
configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o
Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy
\ Global.in fer_img=./train_data/XFUND/ zh_val /val.json \
Global.infer_mode=False

SER + RE モデル串联 python3 ./tools/infer_kie_token_ser_re.py \ -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \ -o
Architecture.Backbone.checkpoints=./pretrained_model/re_vi_layoutxlm_xfund_pretrained/best_accuracy
\ Global.infer_img=./電車データ/ XFUND/zh_val/val.json \
Global.infer_mode=False \ -c_ser
configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o_ser
Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy

終わり

ps:

重要な情報抽出マニュアル md では、.\doc\doc_ch\kie.md事前トレーニング済みモデル (tools/infer_kie_token_ser.py) を使用した予測が
次のいくつかの記事で拡張されることにも言及されています: 具体的な内容の抜粋:のトレーニング プロセスを完了している
場合python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.ymlモデルを通して。次のコマンドを使用して、中国モデルの予測を行うことができます。
python3 tools/infer_kie_token_ser.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml -o Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy Global.infer_img=./ppstructure/docs/kie/input/zh_val_42.jpg
tools/infer_kie_token_ser.py を使用するには、まずトレーニングによって生成されたチェックポイント (./output/ser_vi_layoutxlm_xfund_zh/best_accuracy をサポートとして使用する) を用意する必要があります。そのため、これはトレーニング後にのみ使用できます。これについては、このシリーズの 3 番目の記事で拡張します。

おすすめ

転載: blog.csdn.net/z5z5z5z56/article/details/129268298