参数设定

参考:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from paddleocr import PaddleOCR


OCR_TOOL = PaddleOCR(
    use_angle_cls=True,
    lang="en",
    ocr_version="PP-OCRv3",
    det_db_score_mode="slow",
    # rec_algorithm='CRNN',
    e2e_pgnet_mode="slow",
)

使用流程和参数说明

  1. 主要参数和流程:

    1. 探测 detection
    2. 文本方向 direction classification
    3. 设定语言 lang
    4. 识别 recognition
  2. 一般 paddleOCR 识别字符涉及到的流程是

    1. 探测区域 detection (即参数 det)
    2. 文本区域方向分类 direction classification (即参数 use_angle_cls)

      • cls_model_dir: 方向分类器模型路径
      • cls_image_shape: 预测尺度?
      • cls_thresh 预测阈值
    3. 选定字符的语言(即参数 lang
    4. 设置使用的计算硬件,是否使用 gpu (use_gpu)
    5. 识别字符 recognition (rec)
    6. 设定模型版本 ocr_version

      • 这里说的版本是 PP-OCRv4, PP-OCRv3, …,它们其实是一套模型,负责 detection, direction classifier, recognition
    7. 如果识别 pdf 文件,可是设置识别哪一页 ( page_num)

源码笔记

代码入口: paddleocr/paddleocr.py

模型下载

  1. 下载工具:

    1
    2
    
    from paddleocr.ppocr.utils.network import maybe_download
    maybe_download(model_folder, url)
  2. 模型下载 url: paddleocr.paddleocr.MODEL_URLS

PPStructure 和 PaddleOCR 类的默认参数

  1. parser_args(mMain=True) 函数

FAQ

paddlepaddle + conda 修复 glibcxx 版本问题方法

参考:

方法:

1
conda install -c conda-forge gcc=12.1.0
  • 这种方法只适合 conda, venv + pip 需要修改系统的 gcc 和 libstdc++.so

cuda 12.2 + gcc 12.4: 测试正常

1
2
conda install -c conda-forge gcc=12.1.0
python -m pip install paddlepaddle-gpu==2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 注意:如果还是报错,需要修复 LD_LIBRARY_PATH

    • LD_LIBRARY_PATH="/home/sawyer/miniconda3/envs/<my-conda-env>/lib:${LD_LIBRARY_PATH}"

cudnn 修复方法

1
LD_LIBRARY_PATH="/data/sawyer/miniconda3/envs/table310/lib/python3.10/site-packages/nvidia/cudnn/lib:/home/sawyer/miniconda3/envs/table310/lib:${LD_LIBRARY_PATH}"

paddlepaddle 3.0 rc gpu + layoutparser

  1. 修改 layoutparser 代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 51 _paddle_available = importlib.util.find_spec("paddle") is not None
 52 try:
 53     # The name of the paddlepaddle library:
 54     # Install name: pip install paddlepaddle
 55     # Import name: import paddle
 56     _paddle_version = importlib_metadata.version("paddlepaddle")
 57     logger.debug(f"Paddle version {_paddle_version} available.")
 58 except importlib_metadata.PackageNotFoundError:
 59     try:
 60         _paddle_version = importlib_metadata.version("paddlepaddle-gpu")
 61         logger.debug(f"Paddle version {_paddle_version} available.")
 62     except importlib_metadata.PackageNotFoundError:
 63         _paddle_available = False