如何提取一个 pdf 文件里面, 一个表格的信息? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
woshichuanqilz
V2EX    Python

如何提取一个 pdf 文件里面, 一个表格的信息?

  •  
  •   woshichuanqilz 2018-04-23 16:48:46 +08:00 9369 次点击
    这是一个创建于 2782 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如何提取一个 pdf 文件里面, 一个表格的信息?

    我有一个 pdf 文件, 里面的有一个类似这样的表格, 除了这个表格还有其他很多没有写在表格里面的文字,

    我现在想做的就是提取这个表格里里面的信息, 这个怎么做?

    我湿了 pdfminer, 里面提取的文字顺序尤其是在提取表格内容的时候, 或者在表格里面有换行的情况的时候, 变得很乱无法统一提取信息。请问有没有什么好点的方法?

    20180423164856

    19 条回复    2018-07-15 22:05:41 +08:00
    yidinghe
        1
    yidinghe  
       2018-04-23 16:52:26 +08:00
    理论上 PDF 里面没有表格的概念,只有线、框、文字,所以你可能要计算坐标去判断一个字是否在表格中。
    yo0o0o0
        2
    yo0o0o0  
       2018-04-23 17:02:25 +08:00
    ocr 识别了解一下
    CodingPuppy
        3
    CodingPuppy  
       2018-04-23 17:12:14 +08:00 via Android
    最近也要做这么个需求,表格比你这还复杂~ pdfminer 看了下还没试~感觉 ocr 也有局限~ 还在搜索资料…
    woshichuanqilz
        4
    woshichuanqilz  
    OP
       2018-04-23 17:17:30 +08:00   1
    @CodingPuppy OCR 肯定不行, pdfminer 不行, pdfminer 是无格式的, 无法探知一个字段是不是在表格里面, 我看一楼哥们的方法应该是比较有效的, 只是感觉有点难。。。

    我刚看了一下 pdftable, 里面示例都用不了。。。

    读文件的函数感觉都没写完。

    http://7xpvdr.com1.z0.glb.clouddn.com/95885595-9dc8-4753-9ab1-e023daa27bef0423171652.png
    xupefei
        5
    xupefei  
       2018-04-23 17:18:54 +08:00
    用 Word 打开这个 PDF 就行了。
    akira
        6
    akira  
       2018-04-23 17:22:21 +08:00
    @xupefei word 打开 pdf 一般就是一张大图
    ynyounuo
        7
    ynyounuo  
       2018-04-23 17:26:50 +08:00
    如果是 doc 之类的富文本格式转换的 PDF 可以试试在 Acrobat 里写 Javascript 提取一些信息
    zbl430
        8
    zbl430  
       2018-04-23 17:34:15 +08:00
    pdftotext 之后自己在做处理, 直接识别 table,难
    summerwar
        9
    summerwar  
       2018-04-23 17:40:57 +08:00
    手工敲吧,比找工具快多了 这种表格基本上无解
    nowheretogogo
        10
    nowheretogogo  
       2018-04-23 17:48:45 +08:00
    目前能够直接读取 Pdf 里面表格的应该就只有 Fillable Pdf 了。
    里面可以添加 fields 并通过 field.Value 这种方式获取其中的值。
    timtang2010
        11
    timtang2010   2018-04-23 17:48:55 +08:00
    https://www.freepdfconvert.com/zh-hans/pdf-excel 这个网站不错,前天做报价用了很方便转换了。只不过没有付钱有页数转换的限制。
    zhaoFinger
        12
    zhaoFinger  
       2018-04-23 18:26:02 +08:00
    ocr 吧
    maxco292
        13
    maxco292  
       2018-04-23 18:35:46 +08:00 via Android
    角点检测
    evagreenworking
        14
    evagreenworking  
       2018-04-23 18:57:02 +08:00 via Android
    白描 了解一下
    laqow
        15
    laqow  
       2018-04-23 20:06:16 +08:00 via Android
    不介意的话 acrobat 直接转 doc,或者用 reader 一纵列一纵列的选择复制
    rosu
        16
    rosu  
       2018-04-23 20:09:14 +08:00 via Android
    截图 OCR 呗
    kxxoling
        17
    kxxoling  
       2018-04-24 13:45:49 +08:00
    zix
        18
    zix  
       2018-05-08 18:47:21 +08:00   1
    @kxxoling 项目还没有开源啊……

    @woshichuanqilz

    用 pdfminer 是可以做的,把线识别出来,然后自己组装成表格。另外有一个叫做 tabula-py 的项目了解一下

    附参考资料:

    - http://www.degeneratestate.org/posts/2016/Jun/15/extracting-tabular-data-from-pdfs/
    br />- https://github.com/chezou/tabula-py
    tolecen
        19
    tolecen  
       2018-07-15 22:05:41 +08:00
    白描 现在表格识别有了质的提升,可以尝试一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3222 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 11:23 PVG 19:23 LAX 03:23 JFK 06:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86