1、安装组件
pip install --upgrade paddlepaddle paddleocr
2、完整code
python
import cv2
import numpy as np
from paddleocr import PaddleOCR
# 初始化 PaddleOCR
use_angle_cls=True, lang="ch", det_db_thresh=0.1, det_db_box_thresh=0.5)
def preprocess_image(image_path):
"""
使用 OpenCV 对图像进行预处理
:param image_path: 图像路径
:return: 预处理后的图像
"""
# 读取图像
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转换为灰度图像
blurred = cv2.GaussianBlur(gray, (5, 5), 0) # 高斯模糊去噪
_, binary = cv2.threshold(
blurred, 128, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU
) # 二值化
return binary
def recognize_id_card(image_path):
"""
识别身份证信息
:param image_path: 身份证图像路径
:return: 识别结果
"""
# 预处理图像
preprocessed_image = preprocess_image(image_path)
# 将预处理后的图像转换为 PaddleOCR 需要的格式
img = cv2.cvtColor(preprocessed_image, cv2.COLOR_GRAY2BGR)
# 使用 PaddleOCR 进行文字识别
result = ocr.ocr(img, cls=True)
print(result)
# 提取识别结果
for line in result:
for elem in line:
print(elem[-1][0]) # 打印识别的文本内容
# 示例:识别一张身份证图像
recognize_id_card("card.jpg")
3、调整 PaddleOCR 参数
如果某些图像无法识别,可以尝试调整 PaddleOCR 的参数,例如检测阈值、识别模型等。
ocr = PaddleOCR(use_angle_cls=True, lang="ch", det_db_thresh=0.3, det_db_box_thresh=0.6)
说明:
1、det_db_thresh
• 作用:文字检测的阈值。该参数控制检测算法的灵敏度,值越低,检测到的文字区域越多,但误检率也越高。
• 默认值: 0.3
• 范围: 0.0 到 1.0
• 建议:如果检测到的文字区域太少,可以尝试降低该值;如果检测到的区域太多且包含大量误检,可以提高该值。
2、 det_db_box_thresh
• 作用:文字区域的过滤阈值。该参数用于过滤掉低置信度的检测结果,值越高,保留的检测结果越少。
• 默认值: 0.6
• 范围: 0.0 到 1.0
• 建议:如果检测到的文字区域中有大量误检,可以提高该值;如果检测到的区域太少,可以降低该值。