简介:本文详细介绍PaddleOCR的安装配置、基础使用方法及进阶技巧,涵盖命令行与Python API调用、多语言支持、方向分类及结果可视化,帮助开发者快速实现图片文字识别。
PaddleOCR作为百度开源的OCR工具库,凭借其高精度、多语言支持和轻量化模型,已成为开发者处理图片文字识别的首选工具。本文从环境配置、基础使用到进阶技巧,系统讲解如何快速实现图片文字识别,涵盖命令行调用、Python API操作、多语言模型切换、方向分类及结果可视化等核心功能,并提供实际案例与优化建议。
PaddleOCR的核心价值在于其全流程覆盖能力,支持检测、识别、方向分类三大任务,且提供中英文、多语言、轻量化等多种模型选择。相比传统OCR工具,其优势体现在:
pip install paddlepaddle # 根据CUDA版本选择版本pip install paddleocr
git clone https://github.com/PaddlePaddle/PaddleOCR.gitcd PaddleOCRpip install -r requirements.txtpython setup.py install
from paddleocr import PaddleOCRocr = PaddleOCR() # 默认使用中英文模型print("安装成功!")
paddleocr --image_dir ./test.jpg --use_angle_cls true --lang en
--image_dir:输入图片路径--use_angle_cls:启用方向分类(处理倾斜文本)--lang:指定语言(如ch、en、fr等)
from paddleocr import PaddleOCR# 初始化OCR(支持多语言)ocr = PaddleOCR(use_angle_cls=True, lang="ch")# 识别图片result = ocr.ocr("test.jpg", cls=True)# 输出结果for line in result:print(line[0]) # 坐标与文本print(line[1][0]) # 文本内容print(line[1][1]) # 置信度
import osfrom paddleocr import PaddleOCRocr = PaddleOCR()image_dir = "./images/"results = []for img in os.listdir(image_dir):if img.endswith((".jpg", ".png")):res = ocr.ocr(os.path.join(image_dir, img))results.append((img, res))
PaddleOCR支持80+种语言,通过lang参数指定:
# 法语识别ocr_fr = PaddleOCR(lang="fr")# 阿拉伯语识别(需下载对应模型)ocr_ar = PaddleOCR(lang="ar")
启用方向分类可自动矫正倾斜文本:
ocr = PaddleOCR(use_angle_cls=True) # 默认启用# 手动关闭方向分类ocr_no_cls = PaddleOCR(use_angle_cls=False)
from paddleocr import draw_ocrimport cv2# 识别结果result = ocr.ocr("test.jpg")# 可视化image = cv2.imread("test.jpg")boxes = [line[0] for line in result]txts = [line[1][0] for line in result]scores = [line[1][1] for line in result]vis_img = draw_ocr(image, boxes, txts, scores, font_path="simfang.ttf")cv2.imwrite("result.jpg", vis_img)
import paddlepaddle.set_device("gpu") # 启用GPUocr = PaddleOCR(use_gpu=True)
ocr = PaddleOCR(rec_model_dir="ch_PP-OCRv3_rec_infer",det_model_dir="ch_PP-OCRv3_det_infer",cls_model_dir="ch_ppocr_mobile_v2.0_cls_infer")result = ocr.ocr("id_card.jpg")# 提取姓名、身份证号等关键字段for line in result:if "姓名" in line[1][0]:name = line[1][0].replace("姓名", "").strip()elif "身份证号" in line[1][0]:id_num = line[1][0].replace("身份证号", "").strip()
import pandas as pd# 假设result为表格图片的识别结果table_data = []for line in result:table_data.append([line[0][0][0], line[1][0]]) # 坐标与文本df = pd.DataFrame(table_data, columns=["Position", "Text"])df.to_csv("table_data.csv", index=False)
det_db_thresh和rec_char_dict_path参数
ocr = PaddleOCR(rec_model_dir="./custom_models/en_PP-OCRv3_rec_infer")
batch_size或使用ppocr_mobile系列模型PaddleOCR通过其丰富的功能和灵活的配置,能够满足从个人开发者到企业用户的多样化需求。未来,随着模型压缩技术和多模态融合的发展,PaddleOCR有望在实时性、复杂场景识别等方面实现进一步突破。建议开发者持续关注官方更新,并积极参与社区贡献(如提交数据集或模型优化方案)。
附:资源链接