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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions