{"id":18273595,"url":"https://github.com/rapidai/rapidtable","last_synced_at":"2025-04-05T02:31:19.631Z","repository":{"id":249579969,"uuid":"830985198","full_name":"RapidAI/RapidTable","owner":"RapidAI","description":"源自PP-Structure的表格识别算法，模型转换为ONNX，推理引擎采用ONNXRuntime，部署简单，无内存泄露问题。","archived":false,"fork":false,"pushed_at":"2024-10-17T13:15:59.000Z","size":279,"stargazers_count":16,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-19T12:00:08.412Z","etag":null,"topics":["pp-structure","table-master","table-recognition","tsr"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RapidAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"https://raw.githubusercontent.com/RapidAI/.github/6db6b6b9273f3151094a462a61fbc8e88564562c/assets/Sponsor.png"}},"created_at":"2024-07-19T11:54:57.000Z","updated_at":"2024-10-17T13:11:09.000Z","dependencies_parsed_at":"2024-10-23T08:50:29.454Z","dependency_job_id":null,"html_url":"https://github.com/RapidAI/RapidTable","commit_stats":null,"previous_names":["rapidai/rapidtable"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RapidAI%2FRapidTable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RapidAI%2FRapidTable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RapidAI%2FRapidTable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RapidAI%2FRapidTable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RapidAI","download_url":"https://codeload.github.com/RapidAI/RapidTable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247279429,"owners_count":20912882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pp-structure","table-master","table-recognition","tsr"],"created_at":"2024-11-05T12:07:00.496Z","updated_at":"2025-04-05T02:31:19.576Z","avatar_url":"https://github.com/RapidAI.png","language":"Python","funding_links":["https://raw.githubusercontent.com/RapidAI/.github/6db6b6b9273f3151094a462a61fbc8e88564562c/assets/Sponsor.png"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e\u003cb\u003e📊 Rapid Table\u003c/b\u003e\u003c/h1\u003e\n  \u003c/div\u003e\n\n\u003ca href=\"https://huggingface.co/spaces/Joker1212/TableDetAndRec\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/%F0%9F%A4%97-Online Demo-blue\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.modelscope.cn/studios/RapidAI/TableRec/summary\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/魔搭-Demo-blue\"\u003e\u003c/a\u003e\n\u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-\u003e=3.6,\u003c3.13-aff.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/OS-Linux%2C%20Win%2C%20Mac-pink.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/rapid-table/\"\u003e\u003cimg alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/rapid-table\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pepy.tech/project/rapid-table\"\u003e\u003cimg src=\"https://static.pepy.tech/personalized-badge/rapid-table?period=total\u0026units=abbreviation\u0026left_color=grey\u0026right_color=blue\u0026left_text=Downloads\"\u003e\u003c/a\u003e\n\u003ca href=\"https://semver.org/\"\u003e\u003cimg alt=\"SemVer2.0\" src=\"https://img.shields.io/badge/SemVer-2.0-brightgreen\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n### 简介\n\nRapidTable库是专门用来文档类图像的表格结构还原，表格结构模型均属于序列预测方法，结合RapidOCR，将给定图像中的表格转化对应的HTML格式。\n\nslanet_plus是paddlex内置的SLANet升级版模型，准确率有大幅提升\n\nunitable是来源unitable的transformer模型，精度最高，暂仅支持pytorch推理，支持gpu推理加速,训练权重来源于 [OhMyTable项目](https://github.com/Sanster/OhMyTable)\n\n### 最近动态\n\n2025-01-09 update: 发布v1.x，全新接口升级。 \\\n2024.12.30 update：支持Unitable模型的表格识别，使用pytorch框架 \\\n2024.11.24 update：支持gpu推理，适配 rapidOCR 单字识别匹配,支持逻辑坐标返回及可视化 \\\n2024.10.13 update：补充最新paddlex-SLANet-plus 模型(paddle2onnx原因暂不能支持onnx)\n\n### 效果展示\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/RapidAI/RapidTable/releases/download/assets/preview.gif\" alt=\"Demo\" width=\"80%\" height=\"80%\"\u003e\n\u003c/div\u003e\n\n### 模型列表\n\n|      `model_type`      |                  模型名称                  | 推理框架 |模型大小 |推理耗时(单图 60KB)|\n  |:--------------|:--------------------------------------| :------: |:------ |:------ |\n|       `ppstructure_en`       | `en_ppstructure_mobile_v2_SLANet.onnx` |   onnxruntime   |7.3M |0.15s |\n|       `ppstructure_zh`       | `ch_ppstructure_mobile_v2_SLANet.onnx` |   onnxruntime   |7.4M |0.15s |\n| `slanet_plus` |          `slanet-plus.onnx`           |  onnxruntime    |6.8M |0.15s |\n| `unitable` |          `unitable(encoder.pth,decoder.pth)` |  pytorch    |500M |cpu(6s) gpu-4090(1.5s)|\n\n模型来源\\\n[PaddleOCR 表格识别](https://github.com/PaddlePaddle/PaddleOCR/blob/133d67f27dc8a241d6b2e30a9f047a0fb75bebbe/ppstructure/table/README_ch.md)\\\n[PaddleX-SlaNetPlus 表格识别](https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/table_structure_recognition.md)\\\n[Unitable](https://github.com/poloclub/unitable?tab=readme-ov-file)\n\n模型下载地址：[link](https://www.modelscope.cn/models/RapidAI/RapidTable/files)\n\n### 安装\n\n由于模型较小，预先将slanet-plus表格识别模型(`slanet-plus.onnx`)打包进了whl包内。其余模型在初始化`RapidTable`类时，会根据`model_type`来自动下载模型到安装包所在`models`目录下。当然也可以通过`RapidTableInput(model_path='')`来指定自己模型路径。注意仅限于我们现支持的`model_type`。\n\n\u003e ⚠️注意：`rapid_table\u003e=v0.1.0`之后，不再将`rapidocr`依赖强制打包到`rapid_table`中。使用前，需要自行安装`rapidocr_onnxruntime`包。\n\n```bash\npip install rapidocr\npip install rapid_table\n\n# 基于torch来推理unitable模型\npip install rapid_table[torch] # for unitable inference\n\n# onnxruntime-gpu推理\npip uninstall onnxruntime\npip install onnxruntime-gpu # for onnx gpu inference\n```\n\n### 使用方式\n\n#### python脚本运行\n\n\u003e ⚠️注意：在`rapid_table\u003e=1.0.0`之后，模型输入均采用dataclasses封装，简化和兼容参数传递。输入和输出定义如下：\n\n```python\n# 输入\n@dataclass\nclass RapidTableInput:\n    model_type: Optional[str] = ModelType.SLANETPLUS.value\n    model_path: Union[str, Path, None, Dict[str, str]] = None\n    use_cuda: bool = False\n    device: str = \"cpu\"\n\n# 输出\n@dataclass\nclass RapidTableOutput:\n    pred_html: Optional[str] = None\n    cell_bboxes: Optional[np.ndarray] = None\n    logic_points: Optional[np.ndarray] = None\n    elapse: Optional[float] = None\n\n# 使用示例\ninput_args = RapidTableInput(model_type=\"unitable\")\ntable_engine = RapidTable(input_args)\n\nimg_path = 'test_images/table.jpg'\ntable_results = table_engine(img_path)\n\nprint(table_results.pred_html)\n```\n\n完整示例：\n\n```python\nfrom pathlib import Path\n\nfrom rapidocr import RapidOCR, VisRes\nfrom rapid_table import RapidTable, RapidTableInput, VisTable\n\n# 默认是slanet_plus模型\ntable_engine = RapidTable()\n\n# 开启onnx-gpu推理\n# input_args = RapidTableInput(use_cuda=True)\n# table_engine = RapidTable(input_args)\n\n# 使用torch推理版本的unitable模型\n# input_args = RapidTableInput(model_type=\"unitable\", use_cuda=True, device=\"cuda:0\")\n# table_engine = RapidTable(input_args)\n\nocr_engine = RapidOCR()\nvis_ocr = VisRes()\n\ninput_args = RapidTableInput(model_type=\"unitable\")\ntable_engine = RapidTable(input_args)\nviser = VisTable()\n\nimg_path = \"tests/test_files/table.jpg\"\n\n# OCR\nrapid_ocr_output = ocr_engine(img_path, return_word_box=True)\nocr_result = list(\n  zip(rapid_ocr_output.boxes, rapid_ocr_output.txts, rapid_ocr_output.scores)\n)\n# 使用单字识别\n# word_results = rapid_ocr_output.word_results\n# ocr_result = [\n#     [word_result[2], word_result[0], word_result[1]] for word_result in word_results\n# ]\n\ntable_results = table_engine(img_path, ocr_result)\ntable_html_str, table_cell_bboxes = table_results.pred_html, table_results.cell_bboxes\n# Save\nsave_dir = Path(\"outputs\")\nsave_dir.mkdir(parents=True, exist_ok=True)\n\nsave_html_path = save_dir / f\"{Path(img_path).stem}.html\"\nsave_drawed_path = save_dir / f\"{Path(img_path).stem}_table_vis{Path(img_path).suffix}\"\nsave_logic_points_path = save_dir / f\"{Path(img_path).stem}_table_col_row_vis{Path(img_path).suffix}\"\n\n# Visualize table rec result\nvis_imged = viser(img_path, table_results, save_html_path, save_drawed_path, save_logic_points_path)\n\nprint(f\"The results has been saved {save_dir}\")\n```\n\n#### 终端运行\n\n```bash\nrapid_table -v -img test_images/table.jpg\n```\n\n### 结果\n\n#### 返回结果\n\n\u003cdetails\u003e\n\n```html\n\u003chtml\u003e\n\u003cbody\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eMethods\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eFPS\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSegLink [26]\u003c/td\u003e\n        \u003ctd\u003e70.0\u003c/td\u003e\n        \u003ctd\u003e86d\u003e\n            \u003ctd.0\n        \u003c/td\u003e\n        \u003ctd\u003e77.0\u003c/td\u003e\n        \u003ctd\u003e8.9\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ePixelLink [4]\u003c/td\u003e\n        \u003ctd\u003e73.2\u003c/td\u003e\n        \u003ctd\u003e83.0\u003c/td\u003e\n        \u003ctd\u003e77.8\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTextSnake [18]\u003c/td\u003e\n        \u003ctd\u003e73.9\u003c/td\u003e\n        \u003ctd\u003e83.2\u003c/td\u003e\n        \u003ctd\u003e78.3\u003c/td\u003e\n        \u003ctd\u003e1.1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTextField [37]\u003c/td\u003e\n        \u003ctd\u003e75.9\u003c/td\u003e\n        \u003ctd\u003e87.4\u003c/td\u003e\n        \u003ctd\u003e81.3\u003c/td\u003e\n        \u003ctd\u003e5.2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eMSR[38]\u003c/td\u003e\n        \u003ctd\u003e76.7\u003c/td\u003e\n        \u003ctd\u003e87.87.4\u003c/td\u003e\n        \u003ctd\u003e81.7\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eFTSN [3]\u003c/td\u003e\n        \u003ctd\u003e77.1\u003c/td\u003e\n        \u003ctd\u003e87.6\u003c/td\u003e\n        \u003ctd\u003e82.0\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eLSE[30]\u003c/td\u003e\n        \u003ctd\u003e81.7\u003c/td\u003e\n        \u003ctd\u003e84.2\u003c/td\u003e\n        \u003ctd\u003e82.9\u003c/td\u003e\n        \u003c\u003e\n        \u003cttd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eCRAFT [2]\u003c/td\u003e\n        \u003ctd\u003e78.2\u003c/td\u003e\n        \u003ctd\u003e88.2\u003c/td\u003e\n        \u003ctd\u003e82.9\u003c/td\u003e\n        \u003ctd\u003e8.6\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eMCN[16]\u003c/td\u003e\n        \u003ctd\u003e79\u003c/td\u003e\n        \u003ctd\u003e88\u003c/td\u003e\n        \u003ctd\u003e83\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eATRR\u003c/\n        \u003e[35]\u003c/td\u003e\n        \u003ctd\u003e82.1\u003c/td\u003e\n        \u003ctd\u003e85.2\u003c/td\u003e\n        \u003ctd\u003e83.6\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ePAN [34]\u003c/td\u003e\n        \u003ctd\u003e83.8\u003c/td\u003e\n        \u003ctd\u003e84.4\u003c/td\u003e\n        \u003ctd\u003e84.1\u003c/td\u003e\n        \u003ctd\u003e30.2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eDB[12]\u003c/td\u003e\n        \u003ctd\u003e79.2\u003c/t91/d\u003e\n        \u003ctd\u003e91.5\u003c/td\u003e\n        \u003ctd\u003e84.9\u003c/td\u003e\n        \u003ctd\u003e32.0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eDRRG[41]\u003c/td\u003e\n        \u003ctd\u003e82.30\u003c/td\u003e\n        \u003ctd\u003e88.05\u003c/td\u003e\n        \u003ctd\u003e85.08\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eOurs (SynText)\u003c/td\u003e\n        \u003ctd\u003e80.68\u003c/td\u003e\n        \u003ctd\u003e85\n            \u003ct..40\n        \u003c/td\u003e\n        \u003ctd\u003e82.97\u003c/td\u003e\n        \u003ctd\u003e12.68\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eOurs (MLT-17)\u003c/td\u003e\n        \u003ctd\u003e84.54\u003c/td\u003e\n        \u003ctd\u003e86.62\u003c/td\u003e\n        \u003ctd\u003e85.57\u003c/td\u003e\n        \u003ctd\u003e12.31\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n\u003c/details\u003e\n\n#### 可视化结果\n\n\u003cdiv align=\"center\"\u003e\n    \u003ctable\u003e\u003ctr\u003e\u003ctd\u003eMethods\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003eFPS\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eSegLink [26]\u003c/td\u003e\u003ctd\u003e70.0\u003c/td\u003e\u003ctd\u003e86d\u003e\u003ctd.0\u003c/td\u003e\u003ctd\u003e77.0\u003c/td\u003e\u003ctd\u003e8.9\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003ePixelLink [4]\u003c/td\u003e\u003ctd\u003e73.2\u003c/td\u003e\u003ctd\u003e83.0\u003c/td\u003e\u003ctd\u003e77.8\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eTextSnake [18]\u003c/td\u003e\u003ctd\u003e73.9\u003c/td\u003e\u003ctd\u003e83.2\u003c/td\u003e\u003ctd\u003e78.3\u003c/td\u003e\u003ctd\u003e1.1\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eTextField [37]\u003c/td\u003e\u003ctd\u003e75.9\u003c/td\u003e\u003ctd\u003e87.4\u003c/td\u003e\u003ctd\u003e81.3\u003c/td\u003e\u003ctd\u003e5.2\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eMSR[38]\u003c/td\u003e\u003ctd\u003e76.7\u003c/td\u003e\u003ctd\u003e87.87.4\u003c/td\u003e\u003ctd\u003e81.7\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eFTSN [3]\u003c/td\u003e\u003ctd\u003e77.1\u003c/td\u003e\u003ctd\u003e87.6\u003c/td\u003e\u003ctd\u003e82.0\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eLSE[30]\u003c/td\u003e\u003ctd\u003e81.7\u003c/td\u003e\u003ctd\u003e84.2\u003c/td\u003e\u003ctd\u003e82.9\u003c/td\u003e\u003c\u003e\u003cttd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eCRAFT [2]\u003c/td\u003e\u003ctd\u003e78.2\u003c/td\u003e\u003ctd\u003e88.2\u003c/td\u003e\u003ctd\u003e82.9\u003c/td\u003e\u003ctd\u003e8.6\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eMCN[16]\u003c/td\u003e\u003ctd\u003e79\u003c/td\u003e\u003ctd\u003e88\u003c/td\u003e\u003ctd\u003e83\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eATRR\u003c/\u003e[35]\u003c/td\u003e\u003ctd\u003e82.1\u003c/td\u003e\u003ctd\u003e85.2\u003c/td\u003e\u003ctd\u003e83.6\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003ePAN [34]\u003c/td\u003e\u003ctd\u003e83.8\u003c/td\u003e\u003ctd\u003e84.4\u003c/td\u003e\u003ctd\u003e84.1\u003c/td\u003e\u003ctd\u003e30.2\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eDB[12]\u003c/td\u003e\u003ctd\u003e79.2\u003c/t91/d\u003e\u003ctd\u003e91.5\u003c/td\u003e\u003ctd\u003e84.9\u003c/td\u003e\u003ctd\u003e32.0\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eDRRG[41]\u003c/td\u003e\u003ctd\u003e82.30\u003c/td\u003e\u003ctd\u003e88.05\u003c/td\u003e\u003ctd\u003e85.08\u003c/td\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eOurs (SynText)\u003c/td\u003e\u003ctd\u003e80.68\u003c/td\u003e\u003ctd\u003e85\u003ct..40\u003c/td\u003e\u003ctd\u003e82.97\u003c/td\u003e\u003ctd\u003e12.68\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eOurs (MLT-17)\u003c/td\u003e\u003ctd\u003e84.54\u003c/td\u003e\u003ctd\u003e86.62\u003c/td\u003e\u003ctd\u003e85.57\u003c/td\u003e\u003ctd\u003e12.31\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\n\u003c/div\u003e\n\n### 与[TableStructureRec](https://github.com/RapidAI/TableStructureRec)关系\n\nTableStructureRec库是一个表格识别算法的集合库，当前有`wired_table_rec`有线表格识别算法和`lineless_table_rec`无线表格识别算法的推理包。\n\nRapidTable是整理自PP-Structure中表格识别部分而来。由于PP-Structure较早，这个库命名就成了`rapid_table`。\n\n总之，RapidTable和TabelStructureRec都是表格识别的仓库。大家可以都试试，哪个好用用哪个。由于每个算法都不太同，暂时不打算做统一处理。\n\n关于表格识别算法的比较，可参见[TableStructureRec测评](https://github.com/RapidAI/TableStructureRec#指标结果)\n\n### 更新日志\n\n\u003cdetails\u003e\n\n#### 2024.12.30 update\n\n- 支持Unitable模型的表格识别，使用pytorch框架\n\n#### 2024.11.24 update\n\n- 支持gpu推理，适配 rapidOCR 单字识别匹配,支持逻辑坐标返回及可视化\n\n#### 2024.10.13 update\n\n- 补充最新paddlex-SLANet-plus 模型(paddle2onnx原因暂不能支持onnx)\n\n#### 2023-12-29 v0.1.3 update\n\n- 优化可视化结果部分\n\n#### 2023-12-27 v0.1.2 update\n\n- 添加返回cell坐标框参数\n- 完善可视化函数\n\n#### 2023-07-17 v0.1.0 update\n\n- 将`rapidocr_onnxruntime`部分从`rapid_table`中解耦合出来，给出选项是否依赖，更加灵活。\n\n- 增加接口输入参数`ocr_result`：\n    - 如果在调用函数时，事先指定了`ocr_result`参数值，则不会再走OCR。其中`ocr_result`格式需要和`rapidocr_onnxruntime`返回值一致。\n    - 如果未指定`ocr_result`参数值，但是事先安装了`rapidocr_onnxruntime`库，则会自动调用该库，进行识别。\n    - 如果`ocr_result`未指定，且`rapidocr_onnxruntime`未安装，则会报错。必须满足两个条件中一个。\n\n#### 2023-07-10 v0.0.13 updata\n\n- 更改传入表格还原中OCR的实例接口，可以传入其他OCR实例，前提要与`rapidocr_onnxruntime`接口一致\n\n#### 2023-07-06 v0.0.12 update\n\n- 去掉返回表格的html字符串中的`\u003cthead\u003e\u003c/thead\u003e\u003ctbody\u003e\u003c/tbody\u003e`元素，便于后续统一。\n- 采用Black工具优化代码\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapidai%2Frapidtable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frapidai%2Frapidtable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapidai%2Frapidtable/lists"}