Skip to content

Bug-RapidTableInput中参数engine_type值为EngineType.TORCH时产生异常 #114

@yuege969

Description

@yuege969

问题描述
在使用RapidTable时,RapidTableInput参数中已经明确指定了engine_typetorch, 但是在实际使用过中仍然会加载onnx相关的模型。
实际使用过程中,分别比较了 参数use_ocr设置 TrueFalse 的结果,从结果来看,使用use_ocr=True的效果会好一点,但是只能选择onnxruntime作为推理引擎,使我感到困惑。

请提供下述完整信息以便快速定位问题
(Please provide the following information to quickly locate the problem)

  • 系统环境/System Environment:ubuntu20.04
  • 使用的是哪门语言的程序/Which programing language:python
  • 所使用语言相关版本信息/Version:3.10.14
  • OnnxRuntime版本/OnnxRuntime Version:onnxruntime_gpu==v1.18.0
  • RapidTable版本:2.0.2
  • rapidocr版本:3.2.0
  • 可复现问题的demo/Demo of reproducible problems
import cv2

from rapidocr import RapidOCR
from rapidocr import EngineType as EngineType_RapidOCR
from rapid_table import ModelType, RapidTable, RapidTableInput
from rapid_table import EngineType as EngineType_Table

# 注意这里的参数
ocr_engine = RapidOCR(
    params={
        "Det.engine_type": EngineType_RapidOCR.TORCH,
        "Cls.engine_type": EngineType_RapidOCR.TORCH,
        "Rec.engine_type": EngineType_RapidOCR.TORCH,
        "EngineConfig.torch.use_cuda": True,  # 使用torch GPU版推理
        "EngineConfig.torch.gpu_id": 0,  # 指定GPU id
    }
)

image_path = "1.jpg"

input_args = RapidTableInput(model_type=ModelType.UNITABLE,
                                    model_dir_or_path={"vocab":"models/rapid_table/unitable_vocab.json", "encoder":"models/rapid_table/unitable_encoder.pth", "decoder":"models/rapid_table/unitable_decoder.pth"},
                                    engine_type=EngineType_Table.TORCH,
                                    engine_cfg={"use_cuda": True, "gpu_id": 0})
table_engine = RapidTable(input_args)

for i in range(10):
    start_time = cv2.getTickCount()
    rapid_ocr_output = ocr_engine(image_path)
    ocr_results = [rapid_ocr_output.boxes, rapid_ocr_output.txts, rapid_ocr_output.scores]
    table_results = table_engine(image_path, ocr_results)
    print('case #', i)
    end_time = cv2.getTickCount()
    print(f"Total time: {(end_time - start_time) / cv2.getTickFrequency()} seconds")
  • 完整报错/Complete Error Message
[INFO] 2025-07-10 09:29:23,692 [RapidOCR] base.py:24: Using engine_name: torch
[INFO] 2025-07-10 09:29:24,568 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_det_infer.pth
[INFO] 2025-07-10 09:29:24,569 [RapidOCR] torch.py:45: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_det_infer.pth
[INFO] 2025-07-10 09:29:25,178 [RapidOCR] base.py:24: Using engine_name: torch
[INFO] 2025-07-10 09:29:25,179 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_ptocr_mobile_v2.0_cls_infer.pth
[INFO] 2025-07-10 09:29:25,179 [RapidOCR] torch.py:45: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_ptocr_mobile_v2.0_cls_infer.pth
[INFO] 2025-07-10 09:29:25,273 [RapidOCR] base.py:24: Using engine_name: torch
[INFO] 2025-07-10 09:29:25,324 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_rec_infer.pth
[INFO] 2025-07-10 09:29:25,325 [RapidOCR] torch.py:45: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_rec_infer.pth
[INFO] 2025-07-10 09:29:26,169 [RapidTable] base.py:53: Using engine_name: torch
[INFO] 2025-07-10 09:29:26,813 [RapidOCR] base.py:24: Using engine_name: onnxruntime
[INFO] 2025-07-10 09:29:26,871 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_det_infer.onnx
[INFO] 2025-07-10 09:29:26,871 [RapidOCR] main.py:55: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_det_infer.onnx
[INFO] 2025-07-10 09:29:26,986 [RapidOCR] base.py:24: Using engine_name: onnxruntime
[INFO] 2025-07-10 09:29:26,988 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_ppocr_mobile_v2.0_cls_infer.onnx
[INFO] 2025-07-10 09:29:26,988 [RapidOCR] main.py:55: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_ppocr_mobile_v2.0_cls_infer.onnx
[INFO] 2025-07-10 09:29:27,026 [RapidOCR] base.py:24: Using engine_name: onnxruntime
[INFO] 2025-07-10 09:29:27,049 [RapidOCR] download_file.py:56: File exists and is valid: /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_rec_infer.onnx
[INFO] 2025-07-10 09:29:27,050 [RapidOCR] main.py:55: Using /opt/conda/lib/python3.10/site-packages/rapidocr/models/ch_PP-OCRv4_rec_infer.onnx
  • 可能的解决方案/Possible solutions:
    查看了源码后,我猜测可能是下面代码中在初始化RapidOCR对象时,遗漏了对torch的支持
    rapid_table/main.py line 46:
    def _init_ocr_engine(self):
        try:
            return import_package("rapidocr").RapidOCR()
        except ModuleNotFoundError:
            logger.warning("rapidocr package is not installed, only table rec")
            return None

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions