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
Directorio de artículos
- Contenido relacionado de extracción de información clave en ingeniería.
- Referencia de este artículo
- parte teórica
- paso 0, preparación del entorno
- Paso 1. Descargue y descomprima el modelo de inferencia VI-LayoutXLM
- Paso 2. Descargue el conjunto de datos XFUND
- Paso 3. Utilice el modelo para hacer predicciones (basadas en PaddleInference)
- Otro enfoque (predicción basada en gráficos dinámicos)
- Modelo SER solo de pronóstico
- Concatenación del modelo SER + RE
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
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
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.
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.
Los resultados de la visualización se guardan en ppstructure/output
el directorio
correspondiente a infer.txt.
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.
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=FalsoSER + 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.md
tambié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 hapython3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml
completado 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.