精华内容
下载资源
问答
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdfminer...

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:

    python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:

    pdfminer

    该方式从网上搜索的结果是,可以提取pdf文本数据,但是提取后表格信息就乱了。所以本人没有亲自实验,就果断放弃了实验该方法。如果只是提取pdf里面的文本内容,该方式可能是比较合适的。

    pdf2htmlEX

    #-*- conding: utf-8 -*-

    import subprocess

    subprocess.call('"D:\Program Files (x86)\pdf2htmlEX-win32-0.14.6-upx-with-poppler-data\pdf2htmlEX.exe" --dest-dir E:\\test\extract\\2017gq\\out E:\\test\extract\\2017gq\\a53277ce525547088780c4b94accb7b5.pdf', shell=True)

    执行以上代码,会在指定目录 E:\test\extract\2017gq\out 下生成对应html文件,浏览器中查看效果:

    可以看到整体转换的效果非常不错,但是转换后的标签没有特点,使数据的提取变得非常困难。多番尝试后,感觉该方法不够通用,没法解决我的需求。也许对于单纯的pdf转html,该方式可能是最好的选择。

    Tabula

    Tabula是专门用来提取PDF表格数据的,同时支持PDF导出为CSV、Excel格式。

    官网: http://tabula.technology/

    Github: https://github.com/chezou/tabula-py

    首先安装tabula-py: pip install tabula-py

    tabula-py依赖库包括java、pandas、numpy,所以需保证运行环境中安装了这些库。

    #-*- conding: utf-8 -*-

    import tabula

    df = tabula.read_pdf("E:\\test\\extract\\2017gq\\a53277ce525547088780c4b94accb7b5.pdf", encoding='gbk', pages='all')

    print(df)

    for indexs in df.index:

    # 遍历打印企业名称

    print(df.loc[indexs].values[1].strip())

    执行以上代码,成功打印出表格中的所有企业名称,查看打印的 df 的结构,如下图:

    总结

    以上三种方式中,最后一种方式完美的解决了我的从PDF表格中提取数据的需求,希望能抛砖引玉,大家在使用时选择最适合自己的方法,如有介绍不当之处,望留言中指正,谢过。

    展开全文
  • {"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://www.aliyun.com/product/rds/mysql","icon":"rds_mysql1","contentLink":"https://www.aliyun.com/product/rds/mysql","title":"云数据库RDS MySQL版","des":"云数据库RDS MySQL版 MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供稳定极致的数据库性能,同时灵活的部署架构及产品形态,可满足不同场景下的数据库需求。","btn1":"了解详情","link1":"https://www.aliyun.com/product/rds/mysql","btn2":"管理控制台","link2":"https://rdsnext.console.aliyun.com/#/rdsList/cn-hangzhou/basic/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"MySQL 1年仅19.9元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_9036464270","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"选型指南","firstContentLink":"https://help.aliyun.com/document_detail/164594.html?spm=a2c4g.11186623.6.551.56b67384ispvvk","lastContentName":"上手指南","lastContentLink":"https://help.aliyun.com/document_detail/26124.html?spm=a2c4g.11174283.2.16.51795b83pbkzav"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"X-Engine的应用场景","firstContentLink":"https://help.aliyun.com/document_detail/148402.html?spm=a2c4g.11186623.2.14.3f592685zjuUxu#concept-2364901","lastContentName":"读写分离功能","lastContentLink":"https://help.aliyun.com/document_detail/96073.html?spm=a2c4g.11174283.2.53.42db5b83VvZvMJ"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}}

    展开全文
  • from openpyxl import Workbookimport pymongo# 读取mongoDB数据库相应的表,每条数据取出数个字段存入一个dict,再将所有的dict存入一个listdef read_mongoDB():# 连接mongoDB数据库,读取 db 库 table 表中的数据...

    from openpyxl import Workbook

    import pymongo

    # 读取mongoDB数据库相应的表,每条数据取出数个字段存入一个dict,再将所有的dict存入一个list

    def read_mongoDB():

    # 连接mongoDB数据库,读取 db 库 table 表中的数据

    client = pymongo.MongoClient('127.0.0.1', 27017)

    db = client['db']

    db.authenticate("admin", "pw")

    table = db['table']

    # 创建list用于存储从mongoDB中读取到的数据

    mongo_data_list = []

    # 从table中读取的数据为整个documents内容

    documents = table.find()

    # 遍历 documents 表中的每一个document

    for document in documents:

    # 创建dict用于存储各条数据的各个字段名称及内容

    mongo_data_dict = {}

    id_ = document.get("_id")

    name = document.get("name")

    age = document.get("age")

    # 将查询到的的数据字段内容以更新添加的方式添加到每个dict中

    mongo_data_dict.update({"id": id_})

    mongo_data_dict.update({"name": name})

    mongo_data_dict.update({"age": age})

    print("mongo_data_dict:", mongo_data_dict)

    mongo_data_list.append(mongo_data_dict)

    return mongo_data_list

    # 保存至本地excel表格

    def save_to_excel(mongoDB_data):

    outwb = Workbook()

    outws = outwb.worksheets[0]

    # 遍历外层列表

    for new_dict in mongoDB_data:

    a_list = []

    # 遍历内层每一个字典dict,把dict每一个值存入list

    for item in new_dict.values():

    a_list.append(item)

    # sheet直接append list即可

    outws.append(a_list)

    outwb.save(r'/Desktop/mongoDB数据.xlsx')

    print('数据存入excel成功')

    def main():

    mongoDB_data = read_mongoDB()

    # print(mongoDB_data)

    save_to_excel(mongoDB_data)

    if __name__ == '__main__':

    main()

    展开全文
  • 一、Mongodb导出工具mongoexportMongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式(类似于表格的形式)的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。mongoexport具体...

    一、Mongodb导出工具mongoexport

    Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式(类似于表格的形式)的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。

    mongoexport具体用法C:\mongo\bin>mongoexport -help

    options:

    --help                  produce help message

    -v [ --verbose ]        be more verbose (include multiple times for more

    verbosity e.g. -vvvvv)

    -h [ --host ] arg       mongo host to connect to ( /s1,s2 for sets)

    --port arg              server port. Can also use --host hostname:port

    --ipv6                  enable IPv6 support (disabled by default)

    -u [ --username ] arg   username

    -p [ --password ] arg   password

    --dbpath arg            directly access mongod database files in the given

    path, instead of connecting to a mongod  server -

    needs to lock the data directory, so cannot be used

    if a mongod is currently accessing the same path

    --directoryperdb        if dbpath specified, each db is in a separate

    directory

    -d [ --db ] arg         database to use

    -c [ --collection ] arg collection to use (some commands)

    -f [ --fields ] arg     comma separated list of field names e.g. -f name,age

    --fieldFile arg         file with fields names - 1 per line

    -q [ --query ] arg      query filter, as a JSON string

    --csv                   export to csv instead of json

    -o [ --out ] arg        output file; if not specified, stdout is used

    --jsonArray             output to a json array rather than one object per

    Line

    参数说明:

    -h:指明数据库宿主机的IP

    -u:指明数据库的用户名

    -p:指明数据库的密码

    -d:指明数据库的名字

    -c:指明collection的名字

    -f:指明要导出那些列

    -o:指明到要导出的文件名

    -q:指明导出数据的过滤条件

    二、常用数据导出实例

    1、直接导出数据到文件中

    代码如下:[root@localhost bin]# ./mongoexport -d my_mongodb -c user -o user.dat

    connected to: 127.0.0.1

    exported 2 records

    [root@localhost bin]# cat user.dat

    { "_id" : { "$oid" : "4f81a4a1779282ca68fd8a5a" }, "uid" : 2, "username" : "Jerry", "age" : 100 }

    { "_id" : { "$oid" : "4f844d1847d25a9ce5f120c4" }, "uid" : 1, "username" : "Tom", "age" : 25 }

    [root@localhost bin]#

    命令执行完后使用命令查看,会发现目录下生成了一个students.dat的文件

    参数说明:

    -d 指明使用的库, 本例中为” my_mongodb”

    -c 指明要导出的表, 本例中为”user”

    -o 指明要导出的文件名, 本例中为”user.dat”

    从上面可以看到导出的方式使用的是JSON 的样式

    2、将foo库中的表t1导出成json格式

    代码如下:[root@localhost bin]# ./mongoexport -d foo -c t1 -o /data/t1.json

    connected to: 127.0.0.1

    exported 1 records

    [root@localhost bin]#

    导出成功后我们看一下/data/t1.json文件的样式

    代码如下:root@localhost data]# more t1.json

    { "_id" : { "$oid" : "4f927e2385b7a6814a0540a0" }, "age" : 2 }

    [root@localhost data]#

    3、导出为CSV格式的数据

    代码如下:[root@localhost bin]# ./mongoexport -d foo -c t2 --csv -f age,name -o /data/t2.csv

    connected to: 127.0.0.1

    exported 1 records

    [root@localhost bin]#

    查看/data/t2.csv的导出结果

    代码如下:mongoexport -h 10.100.30.130 --port 27017 -d zhongtudao -c hand_result --type=csv

    -f datetime,url,show_count,click_count -q '{datetime:"20170402"}' -o ./20170402.csv

    4、指定过滤条件导出数据:

    -q 参数的使用方法是:-q '{key:"value"}'

    代码如下:mongoexport -h 10.100.30.130 --port 27017 -d zhongtudao -c hand_result --type=csv

    -f datetime,url,show_count,click_count -q '{datetime:"20170402"}' -o ./20170402.csv

    python学习网,大量的免费MongoDB入门教程,欢迎在线学习!

    展开全文
  • import PyPDF2import repdf_file = open('xxx.pdf', mode='rb')read_pdf = PyPDF2.PdfFileReader(pdf_file)# 获取pdf文件的所有页数number_of_pages = read_pdf.getNumPages()# print('total_page: ', numb...
  • 结合Python的正则表达式re模块进行字符串处理后,将其保存为以标准英文逗号分隔、可被Excel识别的csv格式文件,即进行如下操作:import pdfplumberimport re#提取出单个表格数据with pdfplumber.open(r'F:...
  • 原标题:Python新工具:用三行代码提取PDF表格数据机器之心报道项目作者:vinayak mehta,参与:一鸣从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从...
  • 不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据python高薪就业(视频、学习路线、免费获取)​shimo.imPDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件...
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdfminer...
  • 大家都知道,很多学术报告、论文、分析文章都会使用PDF 展示其中的表格数据。但是对于想要直接从表格中复制数据则会非常麻烦。今天老男孩老师就来为大家分享一个提取工具,它能给直接将大部分表格转换...
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdf...
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdfminer...
  • 不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面...
  • 提取pdf文件中的表格数据原文链接另外参考使用camelot模块可以直接使用pip进行安装pip install "camelot-py[cv]"读入pdf文件import camelottables = camelot.read_pdf('gst-revenue-collection-march2020.pdf', ...
  • Python提取PDF表格数据

    千次阅读 2019-10-10 08:33:18
    不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。 项目地址:https://github.com/camelot-dev/camelot 项目作者提供了三种安装方法。首先,你可以使用 Conda ...
  • import pdfplumber import pandas as pd #打开pdf文件 with pdfplumber.open(filePath) as pdf: first_page = pdf.pages[0] text = first_page.extract_text() print(text) #读取第二页...
  • 不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面...
  • 不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很好的将不同的排版格式固定下来,形成版面...
  • Python 用用三三行行代代码码提提取取PDF表表格格数数据据 这篇文章主要介绍了Python 用三行代码提取PDF表格数据,文中通过示例代码介绍的非常详细对大家的学习或者 工 具有一定的参考学习价值需要的朋友们下面随着小...
  • Python使用Tabula提取PDF表格数据

    千次阅读 2019-06-05 20:25:31
    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX和Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍: ...
  • 项目作者:vinayak mehta参与:一鸣从 PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取...
  • 主要介绍了Python 用三行代码提取PDF表格数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdfminer...
  • 大家好,从PDF提取信息是办公场景中经常需要用到的操作,也是经常又读者在后台问的一个操作。内容少的话我们可以手动复制粘贴,但如果需要批量提取就可以考虑使用Python,之前我也转载过相关...
  • 我们有下面一张PDF格式存储的表格,现在需要使用Python将它提取出来。长按识别下方二维码,并关注公众号回复“PDF”获取案例数据使用Python提取表格数据需要使用pdfplumbe...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 195
精华内容 78
关键字:

python提取pdf表格数据

python 订阅