Detección y reconocimiento de matrículas basado en PaddleOCR

prefacio

requisito previo

introducción relacionada

  • Python es un lenguaje de programación informática multiplataforma. Es un lenguaje de scripting de alto nivel que combina interpretabilidad, compilación, interactividad y orientación a objetos. Originalmente diseñado para escribir scripts de automatización (shell), a medida que la versión se actualiza continuamente y se agregan nuevas características del lenguaje, se utiliza cada vez más para el desarrollo de proyectos independientes y de gran escala.
  • PaddleOCR (nombre completo: Paddle Optical Character Recognition) es una herramienta OCR (reconocimiento óptico de caracteres) de código abierto desarrollada en base al marco de aprendizaje profundo PaddlePaddle. OCR es una tecnología utilizada para convertir contenido de texto impreso o escrito a mano en texto electrónico editable. PaddleOCR tiene como objetivo lograr detección de texto, reconocimiento de texto y análisis de diseño de alta precisión a través de tecnología de aprendizaje profundo.
  • El proyecto PaddleOCR proporciona una solución de OCR de un extremo a otro que cubre las siguientes funciones principales:
    • Detección de texto : identifica regiones de texto en una imagen, generalmente representadas por un cuadro delimitador rectangular.
    • Reconocimiento de texto (Reconocimiento de texto) : para el área de texto detectada, reconozca aún más los caracteres y palabras que contiene y convierta el contenido del texto de la imagen en texto editable.
    • Análisis de diseño : analice la estructura de diseño del documento, incluidos párrafos, encabezados, tablas, etc., para comprender mejor la estructura organizativa del documento.
  • El proyecto PaddleOCR utiliza modelos de aprendizaje profundo, como redes neuronales convolucionales (CNN) y redes neuronales recurrentes (RNN), para entrenar y optimizar modelos para la detección y el reconocimiento de texto. La ventaja de este proyecto es que puede manejar textos en múltiples idiomas y diferentes campos, al tiempo que proporciona una API y una interfaz de línea de comandos fáciles de usar, lo que permite a los desarrolladores integrar fácilmente la tecnología OCR en sus propias aplicaciones.
  • En resumen, PaddleOCR es una herramienta de OCR de código abierto basada en PaddlePaddle diseñada para proporcionar funciones de detección de texto, reconocimiento de texto y análisis de diseño de alta precisión para satisfacer las necesidades de la tecnología OCR en diferentes campos de aplicación.

PaddleOCR

  • Dirección del proyecto : https://github.com/PaddlePaddle/PaddleOCR.git
  • Documentación del tutorial oficial de PaddleOCR : https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md
  • Nota : Los documentos del tutorial oficial de PaddleOCR están escritos con gran detalle y aquellos que estén interesados ​​pueden consultarlos ellos mismos. El motivo para escribir este artículo es un pequeño registro de la implementación rápida de la aplicación y el despliegue de los requisitos de mi propio proyecto después de consultar los documentos del tutorial oficial de PaddleOCR. El propósito de este artículo es implementar rápidamente la aplicación, independientemente del principio, y escribirla más tarde cuando tenga tiempo.

Requisitos medioambientales

  • paletaocr==2.7.0.0
  • remopadel==2.4.2
  • paddleslim: 2.2.2
  • bien proporcionado
  • imagen-scikit
  • imgaug
  • pyclipper
  • ldb
  • tqdm
  • engordado
  • visualdl
  • rapidfuzz
  • opencv-python<=4.6.0.66
  • opencv-contrib-python<=4.6.0.66
  • citón
  • lxml
  • preenviador
  • openpyxl
  • atractivo
  • PyMuPDF<1.21.0
  • Almohada>=10.0.0

Detección y reconocimiento de matrículas

Preparar conjunto de datos

Aquí, el conjunto de datos de matrículas públicas CCPD2020 se utiliza como conjunto de datos principal para el entrenamiento, pero este conjunto de datos públicos no tiene el formato de conjunto de datos requerido por PaddleOCR, por lo que debe convertirse.

  • El conjunto de datos se puede descargar desde https://aistudio.baidu.com/aistudio/datasetdetail/101595
  • Producción de formato de datos PaddleOCR, seguimiento gratuito para escribir. Para obtener más información, consulte el documento tutorial oficial de PaddleOCR : https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md

detección de texto de matrícula

Descargue el modelo previamente entrenado

  • Enlace de descarga : https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_distill_train.tar

Una vez completada la descarga, descomprímalo y colóquelo en el directorio PaddleOCR/models.
inserte la descripción de la imagen aquí

Conjunto de datos de detección de matrículas de ajuste y capacitación

python tools/train.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o  Global.pretrained_model=models/ch_PP-OCRv3_det_distill_train/student.pdparams  Global.save_model_dir=output/CCPD/det Global.eval_batch_step="[0, 772]" Optimizer.lr.name=Const Optimizer.lr.learning_rate=0.0005 Optimizer.lr.warmup_epoch=0 Train.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Train.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/train/det.txt] Eval.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/det.txt]

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

Evaluar el modelo entrenado.

python tools/eval.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o Global.pretrained_model=output/CCPD/det/best_accuracy.pdparams Eval.dataset.data_dir=../../datasets/CCPD2020/ccpd_green Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/det.txt]

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

modelo de exportación

python tools/export_model.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml -o Global.pretrained_model=output/CCPD/det/best_accuracy.pdparams Global.save_inference_dir=output/det/infer

inserte la descripción de la imagen aquí

Reconocimiento de texto de matrícula

Descargue el modelo previamente entrenado

Una vez completada la descarga, descomprímalo y colóquelo en el directorio PaddleOCR/models.
inserte la descripción de la imagen aquí

Conjunto de datos de reconocimiento de matrículas de ajuste y capacitación

python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=models/ch_PP-OCRv3_rec_train/student.pdparams Global.save_model_dir=output/CCPD/rec/ Global.eval_batch_step="[0, 90]" Optimizer.lr.name=Const Optimizer.lr.learning_rate=0.0005 Optimizer.lr.warmup_epoch=0 Train.dataset.data_dir=../../datasets/CCPD2020/PPOCR  Train.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/train/rec.txt] Eval.dataset.data_dir=../../datasets/CCPD2020/PPOCR Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/rec.txt]

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

Evaluar el modelo entrenado.

python tools/eval.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/CCPD/rec/best_accuracy.pdparams Eval.dataset.data_dir=../../datasets/CCPD2020/PPOCR Eval.dataset.label_file_list=[../../datasets/CCPD2020/PPOCR/test/rec.txt]

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

modelo de exportación

python tools/export_model.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec.yml -o Global.pretrained_model=output/CCPD/rec/best_accuracy.pdparams Global.save_inference_dir=output/CCPD/rec/infer

inserte la descripción de la imagen aquí

hacer predicciones

inserte la descripción de la imagen aquí

python tools/infer/predict_system.py --det_model_dir=output/CCPD/det/infer/ --rec_model_dir=output/CCPD/rec/infer/ --image_dir="test.jpg"

inserte la descripción de la imagen aquí

Gráfico de resultados de la prueba

inserte la descripción de la imagen aquí

referencia

[1] https://github.com/PaddlePaddle/PaddleOCR.git
[2] https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md
[3] https://github.com /detectRecog/CCPD

Supongo que te gusta

Origin blog.csdn.net/FriendshipTang/article/details/132238734
Recomendado
Clasificación