本文于 2024-12-09 14:49 更新,部分内容具有时效性,如有失效,请留言
综合介绍
PaddleOCR 是一个基于 PaddlePaddle 的多语言 OCR 工具包,旨在提供实用且超轻量级的 OCR 系统。它支持超过 80 种语言的识别,并提供数据标注和合成工具,支持在服务器、移动设备、嵌入式和物联网设备上进行训练和部署。PaddleOCR 集成了文本图像矫正、版面区域检测、常规文本检测、印章文本检测、文本识别、表格识别等多种功能,显著降低了开发成本,并支持高性能推理、服务化部署和端侧部署等多种方式。
功能列表
- 多语言识别:支持超过 80 种语言的文本识别。
- 数据标注和合成工具:提供便捷的数据标注和合成工具,帮助快速生成训练数据。
- 文本图像矫正:集成文本图像矫正功能,提高识别准确性。
- 版面区域检测:支持高精度版面区域检测,适用于复杂文档的解析。
- 表格识别:提供表格识别功能,能够准确提取表格数据。
- 印章文本检测:支持印章文本的检测和识别。
- 高性能推理:支持高性能推理,满足实时应用需求。
- 多种部署方式:支持服务器、移动设备、嵌入式和物联网设备的部署。
- 低代码开发:提供低代码全流程开发工具,降低开发门槛,提高开发效率。
使用帮助
安装流程
- 环境准备:
- 确保已安装 Python 3.6 或以上版本。
- 安装 PaddlePaddle 框架,可以通过以下命令安装:
pip install paddlepaddle
- 安装 PaddleOCR:
pip install paddleocr
- 下载模型:
- 从官方仓库下载预训练模型,具体下载链接和命令可以参考官方文档。
- 运行示例:
- 使用以下命令运行 OCR 示例:
bash
paddleocr --image_dir ./doc/imgs/11.jpg --det_model_dir ./inference/ch_ppocr_mobile_v2.0_det_infer --rec_model_dir ./inference/ch_ppocr_mobile_v2.0_rec_infer --cls_model_dir ./inference/ch_ppocr_mobile_v2.0_cls_infer
- 使用以下命令运行 OCR 示例:
功能操作流程
- 文本识别:
- 准备待识别的图像文件。
- 使用
paddleocr
命令行工具或 Python API 进行识别。 - 示例代码:
from paddleocr import PaddleOCR, draw_ocr import matplotlib.pyplot as plt import cv2 ocr = PaddleOCR(use_angle_cls=True, lang='ch') img_path = 'path/to/your/image.jpg' result = ocr.ocr(img_path, cls=True) for line in result: print(line) # 可视化结果 image = cv2.imread(img_path) boxes = [elements[0] for elements in result] txts = [elements[1][0] for elements in result] scores = [elements[1][1] for elements in result] im_show = draw_ocr(image, boxes, txts, scores, font_path='path/to/your/font.ttf') im_show = cv2.cvtColor(im_show, cv2.COLOR_BGR2RGB) plt.imshow(im_show) plt.show()
- 表格识别:
- 准备包含表格的图像文件。
- 使用
paddleocr
命令行工具或 Python API 进行表格识别。 - 示例代码:
from paddleocr import PPStructure, draw_structure_result import cv2 table_engine = PPStructure(show_log=True) img_path = 'path/to/your/table_image.jpg' result = table_engine(img_path) for line in result: print(line) # 可视化结果 image = cv2.imread(img_path) im_show = draw_structure_result(image, result, font_path='path/to/your/font.ttf') im_show = cv2.cvtColor(im_show, cv2.COLOR_BGR2RGB) plt.imshow(im_show) plt.show()
- 版面区域检测:
- 准备包含复杂版面的图像文件。
- 使用
paddleocr
命令行工具或 Python API 进行版面区域检测。 - 示例代码:
from paddleocr import PaddleOCR, draw_ocr import matplotlib.pyplot as plt import cv2 ocr = PaddleOCR(use_angle_cls=True, lang='ch') img_path = 'path/to/your/layout_image.jpg' result = ocr.ocr(img_path, cls=True) for line in result: print(line) # 可视化结果 image = cv2.imread(img_path) boxes = [elements[0] for elements in result] txts = [elements[1][0] for elements in result] scores = [elements[1][1] for elements in result] im_show = draw_ocr(image, boxes, txts, scores, font_path='path/to/your/font.ttf') im_show = cv2.cvtColor(im_show, cv2.COLOR_BGR2RGB) plt.imshow(im_show) plt.show()