精华内容
下载资源
问答
  • 今天带来极简Python自动化办公系列之使用Python提取Pdf文字和表格,希望能够在PDF处理上帮到你。这次我们准备了一个pdf测试文件,内容如下:pdf中包括了2页,有文字,图片和表格,覆盖了大部分pdf的场景。...

    【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。

    在日常的工作中,处理PDF是最平常不过的事情了。今天带来极简Python自动化办公系列之使用Python提取Pdf文字和表格,希望能够在PDF处理上帮到你。

    这次我们准备了一个pdf测试文件,内容如下:

    pdf中包括了2页,有文字,图片和表格,覆盖了大部分pdf的场景。

    pdfplumber介绍

    Pdfplumber是一个可以处理pdf格式信息的库。它可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。

    官方repo:

    https://github.com/jsvine/pdfplumber

    安装:

    pip install pdfplumber

    使用入门

    import pdfplumber

    with pdfplumber.open("test.pdf") as pdf:

    first_page = pdf.pages[0] #取第一页

    print(first_page.chars[0])#打印第一页第一个字文字信息

    结果:

    {'fontname': 'CRSMRF+PingFangTC-Semibold', 'adv': Decimal('1.000'), 'upright': 1, 'x0': Decimal('57.000'), 'y0': Decimal('751.840'), 'x1': Decimal('81.000'), 'y1': Decimal('779.776'), 'width': Decimal('24.000'), 'height': Decimal('27.936'), 'size': Decimal('27.936'), 'object_type': 'char', 'page_number': 1, 'text': '关', 'top': Decimal('62.224'), 'bottom': Decimal('90.160'), 'doctop': Decimal('62.224')}

    格式化之后:

    {

    "fontname":"CRSMRF+PingFangTC-Semibold",

    "adv":"1.000",

    "upright":1,

    "x0":"57.000",

    "y0":"751.840",

    "x1":"81.000",

    "y1":"779.776",

    "width":"24.000",

    "height":"27.936",

    "size":"27.936",

    "object_type":"char",

    "page_number":1, #页数

    "text":"关", #第一个文字

    "top":"62.224",

    "bottom":"90.160",

    "doctop":"62.224"

    }

    常用方法extract_text() 用来提页面中的文本,将页面的所有字符对象整理为一个字符串

    extract_words() 返回的是所有的单词及其相关信息

    extract_tables() 提取页面的表格

    提取文字

    #!/usr/bin/env python3

    import pdfplumber

    with pdfplumber.open("test.pdf") as pdf:

    first_page = pdf.pages[0]

    text = first_page.extract_text() #提取第一页的所有文字

    print(text)

    关于我们

    关于FlyPython

    FlyPython是提供⼀站式Python编程学习的组织,我们致⼒于为⽤户提供⾼

    效,有趣的学习环境,打造专注于Python的中⽂学习社区。

    联系我们

    客服&合作: 微信号 flypython

    微信公众号:

    提取表格

    #!/usr/bin/env python3

    import pdfplumber

    import pandas as pd

    with pdfplumber.open("test.pdf") as pdf:

    first_page = pdf.pages[0]

    text = first_page.extract_text()

    print(text)

    second_page = pdf.pages[1] #第二页

    table = second_page.extract_tables()#在第二页提取表格

    for t in table:

    df = pd.DataFrame(t[1:],columns=t[0])

    print(df)

    分类 书名

    0 Python入门 Python编程:从入门到\n实践

    1 Python中级 流畅的Python

    2

    3

    总结

    pdfplumber的接口还是很容易的,如果只是需要提取文字,几行代码就可以提取到。如果是表格并没有提取出来或者错误的提取了非表格的内容,你需要在提取表格时加入table_settings参数来指定表格的设置。

    这次的demo中,图片并没有提取出来,pdf图片的提取会放到下一篇文章,敬请期待。

    人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,可以长按下列二维码关注我们的公众号。

    展开全文
  • python 读取pdf文件有3个扩展包 pdfminer3k(python2中为pdfminer)、fitz和pymupdf1.pdfminer3k读取并获得pdf文档的信息:from pdfminer.pdfparser import PDFParser,PDFDocumentfrom pdfminer.pdfinterp import ...

    python 读取pdf文件有3个扩展包   pdfminer3k(python2中为pdfminer)、fitz和pymupdf

    1.pdfminer3k

    读取并获得pdf文档中的信息:

    from pdfminer.pdfparser import PDFParser,PDFDocument

    from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter,PDFTextExtractionNotAllowed

    from pdfminer.converter import PDFPageAggregator

    from pdfminer.layout import LTTextBoxHorizontal,LAParams,LTTextLineHorizontal,LTFigure,LTRect,LTLine,LTCurve

    # 文件对象

    pd_file = open("d.pdf", "rb")

    # pdf文件解析对象

    parser = PDFParser(pd_file)

    # print(parser)

    # pdf文档对象

    document = PDFDocument()

    parser.set_document(document)

    document.set_parser(parser)

    # 初始化文档密码

    document.initialize()

    if document.is_extractable:

    print(True)

    else:

    raise PDFTextExtractionNotAllowed

    # 存储文档资源

    src = PDFResourceManager()

    # 设备对象

    device = PDFPageAggregator(src,laparams=LAParams())

    # 解释器对象

    inter = PDFPageInterpreter(src,device)

    pages = document.get_pages()

    for page in pages:

    #print(page.contents)

    inter.process_page(page)

    layout = device.get_result()

    for x in layout:

    if isinstance(x, LTTextBoxHorizontal):

    print(str(x.get_text()))

    #t = dir(x)

    #print(t)

    #print(type(x))

    以上代码属于搬运工 (~自带笑哭表情~~~)

    上述代码中各个对象的作用:

    文件解析对象(PDFParser):从文件中提取数据

    文档对象(PDFDocument): 保存提取到的数据

    资源对象(PDFResourceManager):保存共享内容

    设备对象(PDFDevice):处理资源对象为我们所需要的格式

    解释器对象(PDFPageInterpreter): 处理页面内容

    eca2e88e6dac483aa58d7a40af787fd3.png

    layout : 包含文档的全部内容对象主要包含:

    LTPage:页面对象

    LTTextBox:代表一个区域内的文字信息,包含多个LTTextLine,get_text()方法可以获得文本内容。

    LTTextLine:代表一行文字信息,包含多个LTChar,get_text()方法可以获得文本内容。

    LTChar:代表一个字符信息,get_text()方法可以获得文本内容。

    LTAnno:代表文本中的字符的Unicode字符串。

    LTFigure:代表PDF的表单对象,可以包含图形或图片。

    LTImage:代表一个图片对象。

    LTLine : 代表一条直线。

    LTRect:代表一个矩形区域。

    LTCurve:代表一条曲线。

    tip:LTTextBox、LTTextLine可以分别和Horizontal、Vertical 组合表示水平方向和垂直方向

    7fb3dcea6a6f46c88cf8d0215096ec70.jpg

    文档对象(Document)常用属性和方法:

    doc.get_outlines(): 获取文档的目录数据

    doc.is_extractable(): 判断文档是否支持转文字

    doc.get_pages(): 获取所有页面对象

    doc.initialize():初始化文档密码

    doc.set_parser():绑定文档解析对像

    内容对象(LTTextBox、LTTextLine、LTImage...等等)常用属性和方法:

    LTImage:

    LTImage.get_rawdata(): 获取图片数据

    2. fitz 包:

    参考:https://blog.csdn.net/qq_15969343/article/details/81673302

    3.pymupdf包:

    操作pdf文件,可以实现创建pdf文件、修改pdf文件等等。。功能强大。(以后补充...)

    展开全文
  • python 读取PDF表格

    千次阅读 2020-09-25 21:24:47
    python读取PDF表格 1.相关库函数 利用python读取pdf的表格部分,并且以EXCEL的形式保存到本地,主要利用了两个库,pdfplumber和pandas,前者用于操作PDF,后者用于操作EXCEL。 先附上相关代码: import pdfplumber ...

    python读取PDF表格

    1.相关库函数

    利用python读取pdf中的表格部分,并且以EXCEL的形式保存到本地,主要利用了两个库,pdfplumber和pandas,前者用于操作PDF,后者用于操作EXCEL。
    先附上相关代码:

    import pdfplumber
    import pandas as pd
    def pdf_read():
        pdf = pdfplumber.open("aaaa.pdf")
        #pages=input("转换表格的页码")
        p0=pdf.pages[37]
        table=p0.extract_table()
        print(table)
        df=pd.DataFrame(table[1:], columns=table[0])
        df.to_excel("bbbb.xlsx")
    
    if __name__ == '__main__':
        pdf_read()
    

    首先利用pdfplumber.open加载表格,然后跳转到表格所在的页码。执行extract_table()后,再将提取出的表格放到pandas的dataframe中,然后利用pandas另存为表格,

    2.可能遇到的问题

    在生成表格的时候,可能会弹出ImportError: No module named openpyxl,xlrd ,这个时候,只需要pip install openpyxl 就可以了。

    展开全文
  • 解决方案通过查看别人写的博客,我们发现在Python中通常有四种PDF解析:Pdfminer善于分析文字,这种小白尝试,是把桌子变成普通的文字,而且经常伴随着一些莫名其妙的奇怪的未知符号。这个解决方案已经过时了。例如...

    需要

    该公司的PDF年报包含了各种表,这些表需要在一些特定字幕下解析,称为数据结构。

    解决方案

    通过查看别人写的博客,我们发现在Python中通常有四种PDF解析:

    Pdfminer善于分析文字,这种小白尝试,是把桌子变成普通的文字,而且经常伴随着一些莫名其妙的奇怪的未知符号。这个解决方案已经过时了。

    例如,PDF2HTML将PDF解析成HTML,但是HTML标签不是规则的,解析一个是可以的,但是这个白板是许多PDF文档下的字幕表,这个方案直接通过。

    Tabula,这是我老一辈写得最广泛的博客。我已经用过了。对于单元格中没有新行的简单表,表的头和尾并不复杂,该方案值得推荐。计算机需要一个Java环境。

    PDF管道工,这是一个解决方案,已经发现了一个知识渊博的老板,发现人数最少,但最符合我的需要,在安装成功后。前提是你需要安装IMAGEMGEK。

    实现解决方案

    我已经使用了两种解决方案来解决我的需求,即TabLA和PDFPUBUBER。

    先做前期工作。

    1。将PDF文件转换为JPG格式,搜索关键字,查看所需表的页码,如图中的风险管理评分表。

    u=2063593543,1003710562&fm=173&app=25&f=JPEG?w=629&h=419&s=7FA8306311DE45C80ED5E1DF0000C0B1

    代码如下:(有婴儿的百度AIP密钥!

    将PDF分解成JPG。

    从PDF2IMAGE导入RealtToFixPATH,转换为字节

    导入风暴文件

    导入PDF2图像

    DEF PDF2图像(IyPATH,OYPATH):

    TimeFrime.TimeAudio目录()作为路径:

    IsIsFixFixPosie= EngtFixFixPATH(IyPATH,OutpUpHealths= OYPATH,FMT=JPG)

    IyPATH='/用户/高华/桌面/ 33

    OYPATH=‘用户/高华/桌面/ 33’

    PDF2图像(IyPATH,OYPATH)

    重命名文档重命名

    导入操作系统

    路径=’/用户/高华/桌面/ 33’

    DEF ReNeMIX文件(路径):

    OSListdir(PATH)中的文件:

    Os.rename(OS.PATION联接(路径,文件),OS.PATION联接(路径,文件[-5:]))

    ReNaMIX文件(路径)

    使用百度OCR识别

    来自AIP进口公司

    DEBUIDUAIP(AppyID,ApIIKIKE,CONTYTYKEY KEY):

    客户端= AIPOCR(AppHyID,ApIIKEY,CONTYTYKEY)

    返回(客户端)

    AppyID=’116599 28’

    APIKYKEY=OGKG6BurcGnktfoAjjg7RT

    分泌蛋白键=

    客户端= BIDU-AIP(AppHyID,ApIIKEY,CONTYTYKEY)

    DEFGETFILE内容(路径):

    打开(路径,“RB”)作为FP:

    返回FP-读()

    DF FunthPad(路径,KEY-ION字):

    OS.Listdir(PATH)中的文件〔1:- 1〕:

    结果= clie.Basic通用(GETXFILE内容(OS.PATION连接(路径,文件)))

    对于结果项[ [词]结果] ]:

    打印输出(项目[单词] ]

    如果项目中的键入单词[单词' ]:

    返回(文件条('.jpg))

    上面安装的模块不应该是个问题。如果有任何问题,你可以留言。

    调用函数的输出如下

    关键词=“风险管理状态”

    Page=FunthPage(路径,KEY字)

    打印(页)

    会输出相应的页码(无耻地看着婴儿的Juyter看起来好吗?)

    u=3558733856,2590534842&fm=173&app=25&f=JPEG?w=576&h=294&s=A8C2D74B5BA5936C0CCDE50F0000E0C3

    当我们得到页码,我们可以做任何我们想做的事。

    第一种是第一种方法:Tabula。

    具体操作方法如下:

    进口制表

    将PDF读入数据文件

    DF= TabulaRead PdF('/Cuff/Gooa/桌面/ 33 PDF′,Page=STR(页面))

    df

    这直接返回一个数据帧,因此它是直接结构化数据。

    输出如下:

    u=634875828,1180173415&fm=173&app=25&f=JPEG?w=576&h=252&s=28C283433FE8BB640ACDE5060000E0C3

    这样,我们已经完成了我们的需要。下面的段落中关于Excel的下面的话被更多地谈论了。可以移动熊猫或PyWi32。

    虽然TabRA非常方便,但是它的输出确实是不方便的,而且还需要安装Java环境,Java环境变量做宝宝肾不足。

    有时我会输出一些杂乱的东西,例如,有时我会输出传统的中文,我也遇到了。

    所以保险。

    这里还有第二个解决方案:

    同样,这两个解决方案是PDFPUBUBER。

    进口PDFP

    PDF=PDFUntual.OPEN(‘用户/高华/桌面/ 33 PDF’)

    P0= PDF.Page(int(页)- 1”α]注意,这里的页面是从0开始的列表。

    表=P0.Excel表()

    进口熊猫为PD

    DF= PD.DATAFRAM(表[1:],列=表[0)]

    df

    输出如下:

    u=2209404301,2985385652&fm=173&app=25&f=JPEG?w=576&h=338&s=68D283471FED936C0ECDC10F0000E0C2

    虽然为了便于比较,这里使用相同的表,但是解决方案2确实比解决方案1更好。

    不要问我为什么我知道2比1好,你尝试用文本格式解析一些表,用复数头来分析表,你知道的!我在这里不是胡说八道,我必须安装Java,后者只安装一个IMAGE,IMAGEMGEKE非常有用,嘻嘻嘻嘻。

    总结

    百度OCR接口的总和使用,百度AIP这个东西!这是一个人的宝库!你可以自己看。

    还有一个PDF格式的分析软件包。

    但仍存在一些弊端。两个解决方案都是针对具有完整水平和垂直线的智能表,如下面的一个。

    u=141423088,225582252&fm=173&app=25&f=JPEG?w=582&h=388&s=0ACA7A2350AC60AC1A55A0DA0000C0B1

    方案1的识别输出是心脏过剩,肾脏不足,输出无效。

    方案2的输出是一个半九十一步的过程,输出是一个不太像样的表,需要手动调整。

    怎么快速学python,有什么方法,打算深入了解这个行业的朋友,可以加python学习群:399288541,邀请码:(云曦)不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。 每天晚上20:00我都会开直播给大家分享python知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的python党,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

    展开全文
  • 今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:pdf...
  • 读取pdf文件import sysimport importlibimportlib.reload(sys)from pdfminer.pdfparser import PDFParser, PDFDocumentfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom p...
  • pdf文档解析库pdfminer.six在python3环境下要对pdf文档进行解析,需要使用pdfminer.six库,通过pip install pdfminer.six进行安装。在目前,存在pdfminer和pdfminer.six 两个库。在目前pdfminer的github上,已经停止...
  • 本文实例讲述了Python2.7读取PDF文件的方法。分享给大家供大家参考,具体如下:这篇文章示例代码采用的Python版本是2.7,需要下载的插件是PDFMiner,下载地址是http://www.unixuser.org/~euske/python/pdfminer/,...
  • 做数据分析难免要从PDF文件里读取一些文字或数据,鉴于自己对Python最熟悉,所以特地查了下如何用Python读取PDF文档的内容。在Python生态下,一般会用pdfminer(现在的全名叫做pdfminer.six)来读取PDF文件的内容,...
  • 这篇文章主要介绍了Python解析并读取PDF文件内容的方法,结合实例形式分别描述了Python2.7在win32与win64环境下实现读取pdf的相关操作技巧,需要的朋友可以参考下本文实例讲述了Python解析并读取PDF文件内容的方法。...
  • Python 解析 PDF 文本和表格的四大方法介绍== code for paper and NSFC Proj. parsing==: https://gitee.com/sonica/pdf_parsing看到一个不错的知识文章,和大家分享一下:很多文件为了安全都会存成 PDF 格式,比如...
  • list = tabula.read_pdf(r'中央财经大学期刊目录(2019版).pdf', encoding='utf-8', pages='12-19') all_data = [] for df in list: data = df.iloc[:,1].values for i in data: if str(i) == "nan": continue ...
  • new_filename = [] # 设置空列表用来接收存放你截取的表格内容文字 for i in range(len(file_list)): # 循环文件夹的文件 pdf = pdfplumber.open(file_list[i]) # 打开循环到的文件 pages = pdf.pages page = ...
  • PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。PDF 文件是一种非常常用的文件格式,通常用于正式的电子版文件。它能够很...
  • pdf是电子书,文档经常会用的格式,除了下载各种阅读器以外,我们也可以用Python批量处理大量PDF文件。本文用到了pypdf2,pdfminer.six,pdf2image来做常规处理。pypdf2 获取pdf的基本信息,如作者,书名,页数等5 ...
  • PDF 表格中获取数据是一项痛苦的工作。不久前,一位开发者提供了一个名为 Camelot 的工具,使用三行代码就能从 PDF 文件中提取表格数据。机器之心报道,项目作者:vinayak mehta,参与:一鸣。PDF 文件是一种非常...
  • Python读取pdf表格写入excel

    千次阅读 2020-07-20 22:46:46
    十几个银行,每个银行近5年的财务数据,而且财务报表一般都是 pdf 的,我们将 pdf 表的数据一个个的拷贝到 excel ,再借助 excel 去进行求和求平均等聚合函数操作,完事了还得把求出来的结果再统一 CV 到另一张...
  • Pythonversion:3.7.6(default,Jan82020,13:42:34)[Clang4.0.1(tags/RELEASE_401/final)]Javaversion:openjdk version"13.0.2"2020-01-14OpenJDKRuntimeEnvironment(build13.0.2+8)OpenJDK64-BitServerVM(build13.0.2...
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起... 读取pdf文件import sysimport importlibimportlib.reload(sys) frompdfminer.pdfparser import pdfparser,pdfdocumentfrom pdfminer.pd...
  • 主要为大家详细介绍了python实现PDF中表格转化为Excel的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python 读取PDF表格

    2021-06-21 14:32:55
    Python读取excel里面的表格,并保存为xlsx 一、安装模块: import pdfplumber import pandas as pd def pdf_read(): pdf = pdfplumber.open("aaaa.pdf") #pages=input("转换表格的页码") p0=pdf.pages[37] ...
  • 一、pdfminer3kpdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 的文本。网上有很多 pdfminer3k 的代码示例,看过以后,只想吐槽一下,太复杂了,有违 python 的简洁。from pdfminer.pdfparser ...
  • 之前讲过的pdfplumber模块,可以用来提取pdf中表格数据。今天小编就为大家带来实例讲解。作为一个强大的pdf文件解析工具,pdfplumber库可迅速将pdf文档转换为易于处理的txt文档,并输出pdf文档的字符、页面、页码...
  • python读取PDF

    2020-08-07 10:02:06
    python读取PDF文件 coding=utf-8 import os import xlsxwriter from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer....
  • Python 读取pdf

    2021-09-03 17:08:33
    抽空记录一个最近用到的东西 用python 读取pdf 话不多少 还是先上代码: import pdfplumber import re import pandas as pd import json # 首先导入 识别pdf 的包, 网上查有很多种。看个人喜欢来使用吧 def get_rain...
  • python 识别读取pdf中表格数据

    千次阅读 2020-04-14 08:14:45
    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) #读取第二页...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,346
精华内容 1,738
关键字:

python读取pdf中的表格

python 订阅