基于opencv和PaddleOCR识别身份证信息

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

• 建议:如果检测到的文字区域中有大量误检,可以提高该值;如果检测到的区域太少,可以降低该值。

相关推荐
兵慌码乱10 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
梦想三三14 天前
OpenCV银行卡数字识别项目(图像预处理与字符分割)
人工智能·opencv·计算机视觉
武子康14 天前
调查研究-180 roboflow/supervision:计算机视觉工程里的“胶水层“,为什么值得关注?
人工智能·opencv·计算机视觉·chatgpt·llm·向量化
m沐沐14 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---下
人工智能·python·opencv·计算机视觉·pycharm·numpy
fie888914 天前
SSR / MSR 图像增强
人工智能·opencv·计算机视觉
sali-tec14 天前
C# 基于OpenCv的视觉工作流-章85-包胶不良检测
图像处理·人工智能·opencv·算法·计算机视觉
FL162386312915 天前
[cmake]基于C++使用纯opencv部署ppocrv5v6的onnx模型
开发语言·c++·opencv
2401_8856651915 天前
基于OpenCV的模板匹配OCR实战:银行卡与身份证数字识别完整教程
人工智能·python·opencv·计算机视觉·ocr
winfredzhang16 天前
用 MediaPipe 手势数字识别一键打开下载夹里的图片(Python + OpenCV 实战)
人工智能·python·opencv·google·mediapipe
sali-tec16 天前
C# 基于OpenCv的视觉工作流-章84-包胶有无检测
图像处理·人工智能·opencv·算法·计算机视觉