背景: 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=FalseSER + 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 番目の記事で拡張します。