📌 背景与环境信息

  • 硬件平台:Apple Mac mini(M4 芯片,ARM64 架构)
  • 操作系统:macOS Sequoia(最新版)
  • 开发工具:PyCharm Community Edition(中文版)
  • Python 版本:3.12
  • 包管理工具pip
  • 目标库ddddocr(版本 1.6.0)
问题描述

在使用 pip install ddddocr 命令安装了 ddddocr 的 1.6.0 版本后,尝试运行以下代码时遇到了导入错误:

python -c "from ddddocr import DdddOcr; print('✅ 安装成功!')"

报错信息如下:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/(用户名)/Documents/Python/1/.venv/lib/python3.12/site-packages/ddddocr/__init__.py", line 2, in <module>
    from .core import DdddOcr
ImportError: cannot import name 'DdddOcr' from 'ddddocr.core' (/Users/(用户名)/Documents/Python/2/.venv/lib/python3.12/site-packages/ddddocr/core/__init__.py)
解决方案

该错误是由于 DdddOcr 类实际位于 ddddocr.compat.legacy 模块中,而导入路径不正确导致的。按照以下步骤修改相关文件即可解决问题。

正确文件结构应该如下:
ddddocr/
  __init__.py        → 从 .core 导入 DdddOcr
  core/
    __init__.py      → 定义了 DdddOcr 类
 

步骤一:修改 core/__init__.py

找到并编辑 /Users/(用户名)/Documents/Python/1/.venv/lib/python3.12/site-packages/ddddocr/core/__init__.py 文件,将其内容替换为:

# coding=utf-8
"""
核心功能模块
提供OCR识别、目标检测、滑块匹配等核心功能
"""
from .base import BaseEngine
from .ocr_engine import OCREngine
from .detection_engine import DetectionEngine
from .slide_engine import SlideEngine
# ✅ 正确导入:DdddOcr 实际在 compat.legacy 模块中
from ..compat.legacy import DdddOcr  

__all__ = [
    'BaseEngine',
    'OCREngine',
    'DetectionEngine',
    'SlideEngine',
    'DdddOcr'
]
步骤二:修改 __init__.py

找到并编辑 /Users/(用户名)/Documents/Python/1/.venv/lib/python3.12/site-packages/ddddocr/__init__.py 文件,将其内容替换为:

# coding=utf-8

# ✅ 从 core 导入,因为 core/__init__.py 已正确导入 DdddOcr
from .core import DdddOcr 

# ✅ 从 utils 导入真实存在的符号
from .utils import (
    base64_to_image,
    get_img_base64,
    png_rgba_black_preprocess,
    DDDDOCRError,
    ModelLoadError,
    ImageProcessError,
)

# 向后兼容别名
DdddOcrInputError = DDDDOCRError
InvalidImageError = ImageProcessError

__all__ = [
    "DdddOcr",
    "base64_to_image",
    "get_img_base64",
    "png_rgba_black_preprocess",
    "DDDDOCRError",
    "ModelLoadError",
    "ImageProcessError",
    "DdddOcrInputError",
    "InvalidImageError",
]
验证修复结果

完成上述修改后,再次运行测试命令验证是否解决了问题:

python -c "from ddddocr import DdddOcr; print('✅ 安装成功!')"

注意:ddddocr 1.6.0官方说最高支持Python3.13.    我建议使用Python3.12方便后续和别的库配合使用.

 

测试方法:验证修复是否成功

为了确认修复有效,建议进行多维度测试。以下是推荐的 四步验证流程

🔹 测试 1:基础导入测试(快速验证)

python -c "from ddddocr import DdddOcr; print('✅ 基础导入成功!')"

✅ 若输出 ✅ 基础导入成功!,说明核心类已正常加载。


🔹 测试 2:创建实例并调用默认方法

from ddddocr import DdddOcr
import cv2
import numpy as np

# 生成一张简单的测试图片(含文字)
img_data = np.zeros((100, 200, 3), dtype=np.uint8)
cv2.putText(img_data, "Hello DdddOcr!", (10, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)

# 转为 base64 编码
import base64
_, buffer = cv2.imencode('.jpg', img_data)
img_b64 = base64.b64encode(buffer).decode()

# 初始化 OCR 引擎并识别
ocr = DdddOcr()
result = ocr.classification(img_b64)
print("OCR 识别结果:", result)

📌 预期输出:

OCR 识别结果: Hello DdddOcr!

✅ 成功表示模型加载正常,图像预处理与推理链路畅通。

更多推荐