# table_rec_system **Repository Path**: techflag/table_rec_system ## Basic Information - **Project Name**: table_rec_system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-02-16 - **Last Updated**: 2025-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # table_rec_system 中文手写表格识别系统 ## 1.图像预处理 如果扫描后的图像发生倾斜,进行倾斜矫正,对矫正后的边缘进行填充使其变成矩形。 输入:扫描后的图像 输出:校正后的图像 ## 2.识别表格 基于Opencv库,用视觉方法识别出表格线。然后依据表格线来切分单元格,并得到每个单元格的坐标信息。后续对切分好的单元格进行单独识别。 输入:矫正后的图像 输出:截取后的单元格、每个单元格的编号及其坐标(以pos.txt形式保存) ## 3.手写体识别 基于百度飞浆的最新中文识别模型ch_PP-OCRv3_rec_infer,结合10万张手写数据图片训练出了一般性的手写体识别模型。但此模型针对本项目的表格识别效果不佳。 因此我们手填了十份表格,然后使用切分好的单元格图片制作自己的数据集。并在上个手写体模型的基础上进行强化训练。实际测试结果识别准确率接近100%。 输入:截取的单元格图片 输出:每张图片的编号及其内容(以result.txt形式保存) ## 4.表格重建输出为excel表格 ### 方案一: (1)根据两个结果文件中的编号,把识别出的文本和坐标进行对应。 (2)对合并后的结果按照坐标从上到下、从左到右进行排序。 (3)计算出表格的行数。(设置一个纵坐标的容差范围,如果超过该范围就认为此单元格在下一行,并把每行第一个单元格的编号存到数组中) (4)计算出每个单元格的宽度和高度。 (5)新建一个excel表格,把结果按行填入表格当中,同时修改excel表中单元格的大小。 ### 方案二:(对于此表格实测效果不如方案一) (1)前两步和方案一相同 (2)使用 Z-score 方法进行离群值检测并删除异常样本 (3)对坐标进行聚类,然后计算每个字符串的行号和列号。 (4)将数据写入表格 输入:pos.txt和result.txt文件 输出:识别后的excel表格 后续思路: OpenCV误识别的情况能否调整阈值? 单元格裁剪后按照大小进行筛选,去除掉非正常大小的裁剪结果 如果单元格为空, 则输出NULL占一格,维持表格结构