Skip to content

Bug:尝试构建韩文表格识别时出现错误 #144

@commandled

Description

@commandled

windows 11 python 3.11环境下 onnxruntime-1.23.2 rapid_table版本为3.0.1在尝试构建韩文表格识别时出现错误,代码如下:

from rapidocr import (
    LangRec,
    RapidOCR,
)
from rapid_table import ModelType, RapidTable, RapidTableInput
ocr_engine = RapidOCR(
        params={
            "Rec.lang_type": LangRec.KOREAN,
        }
    )
input_args = RapidTableInput(
    model_type=ModelType.SLANETPLUS, engine_cfg={"use_dml": True}
)
table_engine = RapidTable(input_args)
img_path = r"D:\Users\comma\Downloads\python_tests_test_files_korean.jpg"
ori_ocr_res = ocr_engine(img_path)
ocr_results = [ori_ocr_res.boxes, ori_ocr_res.txts, ori_ocr_res.scores]#不明参数
ocr_result = table_engine(img_path, ocr_results=ocr_results)

报错如下:

IndexError                                Traceback (most recent call last)
Cell In[43], line 19
     17 ori_ocr_res = ocr_engine(img_path)
     18 ocr_results = [ori_ocr_res.boxes, ori_ocr_res.txts, ori_ocr_res.scores]#不明参数
---> 19 ocr_result = table_engine(img_path, ocr_results=ocr_results)

File D:\CrawlAI\venv\Lib\site-packages\rapid_table\main.py:107, in RapidTable.__call__(self, img_contents, ocr_results, batch_size)
    104     results.logic_points.extend(logic_points)
    105     continue
--> 107 dt_boxes, rec_res = self.get_ocr_results(imgs, start_i, end_i, ocr_results)
    108 pred_htmls = self.table_matcher(
    109     pred_structures, cell_bboxes, dt_boxes, rec_res
    110 )
    112 results.imgs.extend(imgs)

File D:\CrawlAI\venv\Lib\site-packages\rapid_table\main.py:146, in RapidTable.get_ocr_results(self, imgs, start_i, end_i, ocr_results)
    144 for img, ocr_result in zip(imgs, ocr_results_batch):
    145     img_h, img_w = img.shape[:2]
--> 146     dt_boxes, rec_res = format_ocr_results(ocr_result, img_h, img_w)
    147     batch_dt_boxes.append(dt_boxes)
    148     batch_rec_res.append(rec_res)

File D:\CrawlAI\venv\Lib\site-packages\rapid_table\utils\utils.py:18, in format_ocr_results(ocr_results, img_h, img_w)
     15 def format_ocr_results(
     16     ocr_results: Tuple[np.ndarray, Tuple[str], Tuple[float]], img_h: int, img_w: int
     17 ) -> Tuple[np.ndarray, List[Tuple[str, float]]]:
---> 18     rec_res = list(zip(ocr_results[1], ocr_results[2]))
     20     bboxes = np.array(ocr_results[0])
     21     min_coords = bboxes[..., :2].min(axis=1)

IndexError: index 2 is out of bounds for axis 0 with size 2

检查发现ori_ocr_res能够显示 ,内容如下:

RapidOCROutput(img=array([[[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       ...,

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]]], shape=(208, 1618, 3), dtype=uint8), boxes=array([[[ 115.,   71.],
        [ 494.,   71.],
        [ 494.,  141.],
        [ 115.,  141.]],

       [[ 479.,   70.],
        [1426.,   70.],
        [1426.,  141.],
        [ 479.,  141.]]], dtype=float32), txts=('베이징차오양', '디지털기술로농업새로운발전이끌어'), scores=(0.99507, 0.99916), word_results=(), elapse_list=[2.2739463000034448, 0.004450200009159744, 0.41364620000240393], elapse=2.6920427000150084, viser=<rapidocr.utils.vis_res.VisRes object at 0x000001D84CB38690>)

检查boxes txts scores 情况如下

boxes = ori_ocr_res.boxes
txts = ori_ocr_res.txts
scores = ori_ocr_res.scores
print(len(boxes),len(txts),len(scores))
print(boxes,txts,scores)

2 2 2
[[[ 115.   71.]
  [ 494.   71.]
  [ 494.  141.]
  [ 115.  141.]]

 [[ 479.   70.]
  [1426.   70.]
  [1426.  141.]
  [ 479.  141.]]] ('베이징차오양', '디지털기술로농업새로운발전이끌어') (0.99507, 0.99916)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions