[PaddleOCR-kie] Extracción de información clave 1: uso de la predicción de razonamiento del modelo VI-LayoutXLM (SER+RE)

Antecedentes: antes de entrenar mi propio conjunto de datos para kie, quiero ejecutar las rutinas en md, pero el contenido del tutorial de md es confuso y hay varios manuales para el mismo contenido. Después de todo, es un proyecto de múltiples cooperación entre personas. Puede ser para desacoplamiento de ingeniería. Conveniencia para consideraciones de actualización... Los modelos y pasos de operación que deben ejecutarse están dispersos en diferentes mds en diferentes carpetas... Es muy mudo y realmente hostil para los principiantes. Xiaobai, así que aquí, de acuerdo con el orden de uso de un proyecto normal, procedemos a un resumen.

El contenido de este artículo: utilice la extracción de información clave en el análisis de documentos PP-Structure, ejecute el modelo de razonamiento del modelo VI-LayoutXLM en el conjunto de datos XFUND_zh y ejecute el razonamiento

Actualización 2023.4.24: El nuevo modelo en PaddleNLP: UIE, funciona mucho mejor que VI-LayoutXLM en la extracción de información. Por lo tanto, ¡el método VI-LayoutXLM ha quedado en el limbo!
Para obtener el modelo UIE más reciente y mejor, consulte este artículo: https://blog.csdn.net/z5z5z5z56/article/details/130346646

Contenido relacionado de extracción de información clave en ingeniería.

Aquí primero enumeramos las rutas de contenido relacionadas con kie en el proyecto ppocr para facilitar la búsqueda. Los pasos se integran a partir de estos mds:

  • (Este artículo se refiere principalmente a esto) Extracción de información clave - Manual de inicio rápido:.\ppstructure\kie\README_ch.md
  • Guía de todo el proceso de extracción de información clave:.\ppstructure\kie\how_to_do_kie.md
  • (Evaluación y razonamiento del entrenamiento del modelo propio) manual de extracción de información clave md.\doc\doc_ch\kie.md
  • Algoritmo de extracción de información clave-VI-LayoutXLM.\doc\doc_ch\algorithm_kie_vi_layoutxlm.md
  • El archivo de configuración se encuentra en.\configs\kie\vi_layoutxlm\
  • Documento de descripción del conjunto de datos de extracción de información clave (presenta los conjuntos de datos FUNSD, XFUND y wildreceipt).\doc\doc_ch\dataset\kie_datasets.md
  • Etiquete la información clave usted mismo: documentación de PPOCRLabel./PPOCRLabel/README_ch.md

Referencia de este artículo

- (Este artículo se refiere principalmente a esto) Análisis de documentos de PP-Structure - extracción de información clave - manual de inicio rápido: .\ppstructure\kie\README_ch.md
utilice principalmente el contenido de esta carpeta
inserte la descripción de la imagen aquí

Otras referencias: https://blog.csdn.net/m0_63642362/article/details/128894464

parte teórica

Existen dos soluciones principales para la tarea de extracción de información clave basadas en modelos multimodales.

(1) Detección de texto + Reconocimiento de texto + Reconocimiento de entidades semánticas (SER)
(2) Detección de texto + Reconocimiento de texto + Reconocimiento de entidades semánticas (SER) + Extracción de relaciones (RE)

Para obtener una introducción detallada a las soluciones anteriores, consulte la guía del proceso de extracción de información clave: .\ppstructure\kie\how_to_do_kie.md
primero realizamos un único SER

paso 0, preparación del entorno

Además de la instalación del entorno prebásico

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

Además, hay otra frase.

pip install -r ppstructure/kie/requirements.txt

Paso 1. Descargue y descomprima el modelo de inferencia VI-LayoutXLM

La configuración del entorno no se describe aquí. Puede consultar el artículo anterior del blogger. La carpeta del proyecto ppocr se ha descargado de forma predeterminada a continuación: La siguiente tabla se descarga
del "Algoritmo de extracción de información clave-VI-LayoutXLM" .\doc\doc_ch\algorithm_kie_vi_layoutxlm.md
y se guarda 推理模型en la carpeta denominada modelo en el directorio raíz del proyecto.

Modelo red troncal Tarea archivo de configuración Mmm enlace de descarga
VI-LayoutXLM VI-LayoutXLM-base SER ser_vi_layoutxlm_xfund_zh_udml.yml 93,19% Modelo de entrenamiento / Modelo de inferencia
VI-LayoutXLM VI-LayoutXLM-base RE re_vi_layoutxlm_xfund_zh_udml.yml 83,92% Modelo de entrenamiento / Modelo de inferencia

O descargar + descomprimir directamente en la terminal

#下载解压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

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Paso 2. Descargue el conjunto de datos XFUND

Descargue el conjunto de datos XFUND, colóquelo en la carpeta train_data del directorio raíz,
descárguelo y descomprímalo:

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

La razón por la que se llama train_data es que es consistente con la ruta en el archivo de configuración, por lo que es conveniente usarlo directamente sin modificar el archivo yaml.
inserte la descripción de la imagen aquí

Paso 3. Utilice el modelo para hacer predicciones (basadas en PaddleInference)

PaddleOCR/ppstructure/kie

SER único: reconocimiento de entidades semánticas

Utilice el modelo de inferencia SER descargado previamente

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"

Copiar

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: lo puse en la carpeta del modelo,
  • image_dir: la imagen que se va a predecir
  • ser_dict_path: apunta a la ubicación del archivo de lista del conjunto de datos
  • vis_font_path: es la carpeta de fuentes

La primera ejecución descargará algunos modelos.
inserte la descripción de la imagen aquí

Los resultados de la visualización se guardan en ppstructure/outputel directorio
inserte la descripción de la imagen aquí
correspondiente a infer.txt.
inserte la descripción de la imagen aquí

SER+RE: Extracción de Relación

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"

Copiar

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"

Mi razonamiento sobre la caja NX será más lento.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
RE todavía es relativamente débil en algunos contenidos.

Otro enfoque (predicción basada en gráficos dinámicos)

En el manual, también hay un código que usa tools/infer_kie_token_ser.py, motor PaddleOCR, que usa un modelo previamente entrenado y predicción basada en gráficos dinámicos. Sin embargo, después de las pruebas reales, usar el modelo previamente entrenado directamente aquí tiene el mismo efecto
. efecto que usar el modelo de ajuste fino anterior. Después de todo, no hay ajuste fino

#安装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

Si desea utilizar el motor de OCR para obtener resultados de predicción de un extremo a otro, puede utilizar los siguientes comandos para realizar predicciones.

Modelo SER solo de pronóstico


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

Concatenación del modelo 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

(Participa en sesiones de entrenamiento posteriores) Si desea cargar los resultados de detección y reconocimiento de texto marcado, puede usar el siguiente comando para hacer predicciones únicamente.
Solo predice el modelo 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=Falso

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/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

fin

PD:

En el manual de extracción de información clave md, .\doc\doc_ch\kie.mdtambién se menciona que la predicción utilizando el modelo previamente entrenado (tools/infer_kie_token_ser.py)
se ampliará en los próximos artículos: Extracto de contenido específico:
si ha python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.ymlcompletado el proceso de capacitación de el modelo a través de . Puede utilizar los siguientes comandos para realizar predicciones del modelo chino.
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
Para usar tools/infer_kie_token_ser.py, primero debe tener los puntos de control generados por la capacitación: ./output/ser_vi_layoutxlm_xfund_zh/best_accuracy como soporte, por lo que solo se puede usar después de la capacitación, que se ampliará en el tercer artículo de esta serie.

Supongo que te gusta

Origin blog.csdn.net/z5z5z5z56/article/details/129268298
Recomendado
Clasificación