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

Open
#144 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
python

Research direction

Start at rapid_table/main.py in RapidTable.call and get_ocr_results, then inspect rapid_table/utils/utils.py:18, where format_ocr_results processes the supplied OCR tuple. Reproduce the call with the shown Korean OCR output and verify that the reported two detections are handled without IndexError and produce table results.

Written by the indexing model from the issue text.

Description

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)

Dominant language
Python
Stars
438
Forks
41
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from RapidAI/RapidTable

All issues in RapidAI/RapidTable

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.