Uso simple de Baidu Flying Paddle PaddleOCR

PaddleOCR tiene como objetivo crear una biblioteca de herramientas OCR rica, líder y práctica para ayudar a los desarrolladores a entrenar mejores modelos e implementar aplicaciones.

PaddleOCR es una biblioteca de reconocimiento de imágenes, solo usé su función OCR, que es reconocer el texto en la imagen. Otras funciones también son muy potentes, no las he usado.

Instalar

ACTUALIZACIÓN: a partir del 21 de diciembre de 2022, paddlepaddle es 2.4.1, paddleocr es 2.6.1.2, numpy es 1.24.0 y numpy se instala automáticamente. Si se informa el error AttributeError: el módulo 'numpy' no tiene atributo 'int' durante la identificación, se instalará numpy 1.23.4, porque paddlepaddle en el servidor (entorno oficial en línea) es 2.3.2, paddleocr es 2.6.1.0, y numpy es 1.23 4. Es normal en el servidor.

Actualización: a partir del 28 de noviembre de 2022, paddlepaddle es 2.4.0 y paddleocr es 2.6.1.1 Al instalar Linux, no es necesario instalar Shapely manualmente, pero Shapely se instalará automáticamente cuando se instale paddleocr. Además, si ejecuta el código en CentOS e informa un error ImportErrer: libpython3.8.s0.1.0: cammot open shared object file: No such file or directory, este artículo puede resolverlo. No hubo tal problema antes, y puede ser debido a la actualización de la versión pregunta.

linux

  • pip instalar paddlepaddle
  • pip instalar bien formado
  • pip instalar paddleocr

ventanas

  • pip instalar paddlepaddle
  • Descargue manualmente el archivo whl bien formado aquí e instálelo (el comando de instalación es pip install xxx.whl, la ruta del archivo whl es mejor para ser una ruta absoluta, o cmd ingresa al directorio donde se encuentra el archivo whl por adelantado), no puede directamente pip install bien formado, habrá problemas, ¿cuál específicamentedescargar Ejecute pip debug --verbose en cmd, soy python 3.8, en realidad elija de acuerdo con su versión de python.

  •  pip install paddleocr puede informar un error ERROR: Falló la rueda de construcción para python_Levenshtein durante la instalación, también descargue manualmente el archivo whl aquí para instalar y luego instale paddleocr

usar 

El siguiente código tiene algo más de contenido que el código de muestra oficial (versión 2.6) 1 y el código de muestra oficial (versión 2.6, incluidas las descripciones de parámetros) 2 , como la importación de paquetes, la desactivación de la impresión de registros y la aceleración de la velocidad de reconocimiento (mi reconocimiento antes de acelerar) Se tarda 3,1 segundos en crear una imagen y 1,5 segundos después de acelerar. No uso una GPU. El tiempo específico que lleva depende del rendimiento de la máquina).

La descripción del parámetro de PaddleOCR() se encuentra en la parte inferior de la página de código de ejemplo oficial.

from paddleocr import PaddleOCR, draw_ocr, paddleocr
import logging

# paddleocr.logging.disable(logging.DEBUG)  # 关闭DEBUG日志的打印,用PaddleOCR(enable_mkldnn=True, use_tensorrt=True, use_angle_cls=False, lang="ch")时生效
# 还有关闭日志打印的方法https://github.com/PaddlePaddle/PaddleOCR/issues/2467,未测试
# paddleocr.logging.disable(logging.WARNING)  # 关闭WARNING日志的打印

# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
# ocr = PaddleOCR(enable_mkldnn=True, use_tensorrt=True, use_angle_cls=False, lang="ch")  # enable_mkldnn是Intel芯片的加速库,识别一张身份证大约需1.5秒 from https://www.cnblogs.com/newmiracle/p/15358230.html和https://www.cnblogs.com/newmiracle/p/15346284.html和https://github.com/PaddlePaddle/PaddleOCR/issues/1500,官方文档对enable_mkldnn参数的介绍https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.5/doc/doc_ch/FAQ.md#qpaddleocr%E4%B8%AD%E5%AF%B9%E4%BA%8E%E6%A8%A1%E5%9E%8B%E9%A2%84%E6%B5%8B%E5%8A%A0%E9%80%9Fcpu%E5%8A%A0%E9%80%9F%E7%9A%84%E9%80%94%E5%BE%84%E6%9C%89%E5%93%AA%E4%BA%9B%E5%9F%BA%E4%BA%8Etenorrt%E5%8A%A0%E9%80%9Fgpu%E5%AF%B9%E8%BE%93%E5%85%A5%E6%9C%89%E4%BB%80%E4%B9%88%E8%A6%81%E6%B1%82
# 输入待识别图片路径
img_path = r"d:\Desktop\4A34A16F-6B12-4ffc-88C6-FC86E4DF6912.png"
# 输出结果保存路径
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

from PIL import Image
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores)
im_show = Image.fromarray(im_show)
im_show.show()

Para las representaciones, consulte el enlace de referencia (también hay representaciones en el código de muestra oficial), también aprendí de sus pasos, pero encontré problemas al instalar en Windows, regístrelo.

Si aún cree que la velocidad de reconocimiento es lenta después de la aceleración, puede comprar directamente la interfaz de reconocimiento de Baidu, Alibaba Cloud o Tencent Cloud, o comprar un servidor con GPU. Si tiene otras formas de acelerar de forma gratuita, hágamelo saber, gracias.

Pon otra introduccion al clasificador de orientacion de texto (version 2.6) no se como usarlo en el codigo puede ser el parametro use_angle_cls hay una introduccion en el link con la descripcion del parametro pero no puedo entiendelo. Por ejemplo, si la tarjeta de identificación se toma verticalmente, debe girarse 90 grados hacia la izquierda o hacia la derecha para que el texto sea horizontal. No sé cómo PaddleOCR puede girar la imagen antes del reconocimiento, o si PaddleOCR girará automáticamente la imagen antes del reconocimiento. Cuando realmente lo usé, configuré use_angle_cls en False, porque la velocidad de reconocimiento es lenta cuando es True, y solo tengo CPU. Y la introducción de la versión 2.6 dice:

El clasificador de dirección de texto se utiliza principalmente en la escena donde la imagen no está a 0 grados, en esta escena es necesario realizar una operación de normalización en las líneas de texto detectadas en la imagen. En el sistema PaddleOCR, las imágenes de líneas de texto obtenidas después de la detección de texto se envían al modelo de reconocimiento después de una transformación afín. En este momento, solo se requiere una clasificación de ángulo de 0 y 180 grados para el texto, por lo que el clasificador de dirección de texto incorporado de PaddleOCR solo admite Clasificación de 0 y 180 grados . Si desea admitir más ángulos, puede modificar el algoritmo usted mismo para admitirlo.

Link de referencia

Varias bibliotecas de reconocimiento ocr de Python de nivel de entrada adecuadas para Xiaobai

Guía de uso del servicio OCR (reconocimiento de texto) de Baidu

python, use (pip install .) Rueda de construcción fallida para python_Levenshtein solution_A Wu Guangzhi's Blog-CSDN Blog

Problema de sintaxis de Python: el módulo 'pip._internal' no tiene el atributo 'pep425tags'. Razones y soluciones, vista de 32 bits y 64 bits compatible con pip método universal_Struggling blue algae blog-CSDN blog_pip._internal

Método Python paddleocr para aumentar la velocidad de reconocimiento- newmiracle universe- Blog Park (cnblogs.com)

El método de paddleocr para mejorar el reconocimiento - newmiracle universe - blog garden (cnblogs.com)

Si tienes otras preguntas, también puedes leer las preguntas frecuentes oficiales 

Supongo que te gusta

Origin blog.csdn.net/fj_changing/article/details/126243370
Recomendado
Clasificación