识别过程
把一张表格图片变成 Excel 分三步。第一步,用开源项目 PaddleOCR 的 PP-OCRv5 文字检测模型找出图片里每一行文字的位置;如果图片有点歪,会按这些文字行的平均倾斜角度把图片转正,这样每一行都是水平的。第二步,把每一行文字单独截出来,交给 PP-OCRv6 文字识别模型,它认识约一万八千个字符,简体、繁体、英文、日文、数字和常用符号都包括在内。第三步,把识别出的文字排进行和列。前两步只是“认字”,第三步才把文字变成能用的表格。
有框线和没有框线的表格
大多数表格有框线,框线是最可靠的依据。工具会在图片里寻找横向和纵向的细线,把被压缩噪点、抗锯齿打断的线段重新连起来,再保留互相交叉的线,组成表格网格。两个相邻单元格之间如果没有画线,就说明它们是合并的,在 Excel 里也会合并。很多表格的表头是彩色底,色块的边缘同样会当作分隔线。网格上方的标题、下方的备注会作为单独的行放进表格。
如果表格没有框线,或者只有表头下面一条横线,就根据文字的排列来分列:高度相同的文字属于同一行;再看每个水平位置在多少行里有文字,从上到下一直空着的位置就是列与列的分界。两列靠得太近时,检测模型可能把它们当成一行文字,这时会在分界处重新拆开。
让结果更准确的小技巧
图片里除了表格还有其他内容时,先用裁剪工具只留下表格。网页上的长表格,用浏览器的整页截图,比用手机拍屏幕清楚得多。用手机拍纸质表格时,尽量让手机和纸面平行,在光线均匀的地方拍,避免阴影和反光。如果只需要文字、不需要表格结构,可以用图片转文字;想把多张图片合成一个文件发给别人,可以用图片转 PDF。