使用pdfplumber提取扫描PDF表格时无法识别行列边界的问题求助
pdfplumber提取扫描PDF表格时无法识别行列边界的问题求助
大家好,我现在卡在了扫描版PDF的表格提取问题上,试了各种办法都没搞定,想请各位帮忙出出主意。我的想法是先把这单页PDF的提取逻辑跑通,再批量处理一堆同类型的文件。
我用pdfplumber和pandas来处理,代码如下:
import pdfplumber import pandas as pd pdf_path = "/Users/Blacky_1_2/Desktop/python/nominal_rolls/pdf/e011087784.pdf" output_csv = "/Users/Blacky_1_2/Desktop/python/nominal_rolls/csvs/2nd.csv" # 打开PDF文件 with pdfplumber.open(pdf_path) as pdf: p1 = pdf.pages[0] settings = { "vertical_strategy": "text", "horizontal_strategy": "text", "snap_y_tolerance": 1, "intersection_x_tolerance": 3, } table = p1.find_table(table_settings=settings) im = p1.to_image(resolution=150) im.reset().debug_tablefinder(settings) # table = pd.DataFrame(page_crop_new.extract_table(settings)) display(im) # 显示调试用的表格识别预览图
我已经反复调整过table_settings里的各种参数,但不管怎么组合,总有几列的字段边界识别错误:
- 当我把
vertical_strategy和horizontal_strategy都设为"text"时,提取的表格里部分列的内容会串在一起,没法正确区分不同字段 - 改成
horizontal_strategy = "lines"后,虽然能看到列的分隔线,但分隔位置完全不对,和实际表格结构不匹配
除此之外我还试过这些办法,但都没效果:
- 尝试手动指定表格的垂直线位置,也试过设置忽略表头,但都没能解决边界识别的问题
- 换用了PyMuPDF(
fitz)模块,但用正则匹配内容时也遇到了不少问题,没法干净地提取每行的各个字段
我知道这是一份比较老的扫描件,可能识别难度高,但从文件清晰度来看,应该是能正确提取出表格结构的,实在不知道该怎么调整了,求各位大佬指点!
内容来源于stack exchange
相关产品推荐
相关产品推荐

