尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

表格识别:从「一行行文字」到「一格一格的表」--OnnxOCRRapidTable

表格识别:从「一行行文字」到「一格一格的表」--OnnxOCRRapidTable 表格识别从「一行行文字」到「一格一格的表」–OnnxOCRRapidTable1、写在前面8月初整个东北笼罩在穹顶之下酷热难耐之时我到传奇小城鹤岗的客户现场出差算是躲过了热浪。我对这座城市最久远的印象应该是学生时代的地理鸡西鹤岗的煤是出名的。后来鹤岗的房价火出圈后知名度算是更高了吧。那些日子只要晚上有空我就会跑到鹿林山公园的人民广场溜达。那边有巨大的观音像也有巨幕的露天电影可以看。当我离开的时候绿皮火车绕城而过看着鹿林山上的观音像离我而去我在想不知道以后是否还有机会来到这座城。是的这篇文章跟鹤岗没有关系我只是对我消失的这段时间做个简要的汇报。哈哈哈看到最近小伙伴留言有许多新的需求。这很好我后面会慢慢做起来的。今天想重点讲讲表格识别这是在开发清单位置靠前的需求同时我也看到有些问答经常提到这个话题。有这样一个场景你在外面看到一张带着表格信息的宣传报你对里面的信息很感兴趣而且你也想在此基础上做一些修改。那么怎么办普通 OCR 会给你一堆文字字都认对了但行列关系丢了。复制进 Excel还得人工对齐、合并单元格、补边框——表格越密越折磨人。表格识别要解决的正是不光是认字还要还原「第几行第几列、谁和谁合并了」。2、普通 OCR 和表格识别的差异点可以把一张表想象成两层信息层次普通 OCR 给你什么表格识别额外给你什么文字层「螺丝」「0.5」「100」同上结构层无这是第 2 行第 3 列上面两行合并成表头我看业界常见做法是「先 OCR 认字再用结构模型还原表格」而不是一个大模型端到端包办。OnnxOCR 走的也是这条路底层 OCR 还是 PP-OCR 那套检测 识别上面叠一层 RapidTable结构模型默认SLANet-plus。3、一张图在系统里怎么流转整条链路可以描述为表格图片 ↓ ① 文字检测det—— 找到每个字/词块的位置 ↓ ② 文字识别rec—— 读出具体内容 ↓ ③ 结构还原RapidTable / slanet-plus—— 根据框的位置关系推断行列与合并 ↓ 输出 HTMLtable…/table 单元格框 逻辑坐标 ↓ 可选HTML → Excel表格模式 通用 OCR 跑一遍 TableRecognizer 再跑一遍。TableRecognizertable_recognition.py把 OCR 的框、文字、分数整理成 RapidTable 需要的格式再喂给slanet-plus.onnx。4、Python 端参考OnnxOCR开源项目4.1 准备模型表格模型不在默认小包里面需要单独下python scripts/download_models.py# 确认存在# onnxocr/models/table/slanet-plus.onnx国内走 ModelScope 即可和国际用户一样也可以从 HuggingFace 拉。4.2 最小示例仓库里tests/test_table_ocr.py就是标准入口fromonnxocr.onnx_paddleocrimportONNXPaddleOcr,sav2TableImgimportcv2 modelONNXPaddleOcr(use_angle_clsTrue,use_gpuFalse,use_table_recognitionTrue,table_model_typeslanet_plus,)imgcv2.imread(onnxocr/test_images/table.jpg)resultmodel.ocr(img)print(result[html][:500])# 带 td rowspan… 的 HTMLsav2TableImg(img,result,name./result_img/test_table_vis.jpg)返回字典里几个常用字段字段含义html可直接嵌网页、也可转 Excel 的表格 HTMLcell_bboxes每个单元格在图上的框logic_points逻辑行列坐标第几行第几列processing_time耗时除了默认的slanet_plus还支持ppstructure_zh/ppstructure_en两套 SLANet按文档语言切换table_model_type即可。4.3 WebUI 里试本地起 WebUI 后浏览器里切到「表格识别」标签上传一张表就能看 HTML 和可视化——和命令行是同一套引擎。5、为此我做了一个小程序今年的折腾还没有结束从C#到Android这次终于轮到了微信小程序了。经过一个多月的注册审核各种手续我在微信里上架了小程序「程序员Linc表格识别」。大家可以使用下看看还原度不够的看看是否还能够继续优化。我们压榨服务器性能的同时也精进了我们的技术。6、小结表格识别是认字 还原结构两段式流水线PP-OCR 负责「读出来」RapidTable / SLANet 负责「排成表」最后 HTML 一出口复制、渲染、转 Excel 就完活了。微信小程序搜索程序员Linc表格识别参考OnnxOCR 上游https://github.com/jingsongliujing/OnnxOCRRapidTablehttps://github.com/RapidAI/RapidTable
返回列表