加入数字营销课程的价值基础1999年免费的

一个完整的指南如何使用Python的PDF

78年03 d99b0ac5caca23ba22fb6b2906e852

Python是一种高级语言表达用一个简单的语法。这使得学习变得方便新程序员。一些Python库可以处理非结构化的数据,比如pdf文档。有用的信息,如音频、视频连接,按钮,业务逻辑,并在pdf表单字段可以找到。

用于显示和共享文件,PDF或便携式文件格式是一种文件格式。PDF是由Adobe开发但现在由国际标准化组织(ISO)。你必须使用PyPDF2包在处理Python的PDF。是纯Python包,可以用来执行各种PDF操作。

文本分析PDF存储时发挥作用。Python是用来模拟大量的代码和库用于文本分析。一旦收集了所需的信息,数据可用于自然语言处理和机器学习系统。

这里有图书馆,可以用于处理PDF文件:

PDFMiner这个图书馆是用来从PDF文件中提取有用的信息。与其他工具,整个这个包的焦点是获取和分析数据。

PyPDF2——这是一个PDF库由纯Python可以收获,分裂,转换和PDF文件合并在一起。也有选择添加自定义数据,密码和查看PDF文件选项。你可以合并一起整个PDF和检索元数据和文本从PDF。

想知道成为之路数据科学专家?

下载详细的小册子和获得免费访问在线直播Demo类与行业专家。

日期:7月1日(坐)| (IST) 11点- 12点
这个字段是用于验证目的,应该保持不变。

Tabula-py——这是tabula-java的Python包装器可以用于读取表出现在PDF。你也可以将其转换为DataFrame熊猫。还有一个选择PDF文件转换成JSON / TSV CSV文件。

板岩——这是PDFMiner包装器实现。

PDFQuery——这是光包装pyquery, lxml, pdfminer。有了它,您就可以从pdf文件中提取数据可靠,无需编写代码长。

Xpdf——这是Python包装器,目前提供的实用程序将pdf转换为文本。

第一个pyPDF包在2005年被释放。最后更新包是2010年制造的。然后,公司名叫Phasit创建了一个名为PyPDF2的包pyPDF的叉子。这个包是向后兼容pyPDF和完美工作好几年了2016。然后有几个版本的pyPDF3 PyPDF4后来改名为。

几乎所有这些包在同一时间。然而,有一个主要的区别PyPDF2 +和原始pyPDF即前支持Python 3。尽管PyPDF2最近被遗弃,PyPDF4不是向后兼容的

替代PyPDF2是由帕特里克Maupin pdfrw名称。它的大部分东西PyPDF。唯一与pdfrw两者之间的主要区别在于,你可以把它与ReportLab包,可以创建一个新的PDF ReportLab包含部分或全部现有的PDF的一部分。

在Python中使用PDF的第一步是安装包。您可以使用conda(如果您使用的是蟒蛇)或脉冲(如果您使用的是常规的Python)安装PyPDF2。这是你需要做的安装使用pip PyPDF2:

pip安装pypdf2美元

安装过程不以时间为PyPDF2包没有任何依赖关系。现在,让我们继续从PDF文件中提取信息。

提取

提取文本从pdf
从pdf源- pdf表格提取文本

PyPDF2,你将能够从PDF和元数据中提取文本。这方便当你正致力于自动化既存的PDF文件。您可以提取以下类型的数据使用PyPDF2包:

⇒创造者

⇒作者

⇒主题

⇒生产商

⇒标题

⇒的页面数量

练习这个,你需要一个PDF。任何PDF将做这项工作。在这个例子中,我们假设example.pdf pdf的名称。现在,这里会让你的代码访问PDF的属性:

# extract_doc_info.py从PyPDF2进口PdfFileReaderdef extract_information (pdf_path):张开(pdf_path rb) f:pdf = PdfFileReader (f)信息= pdf.getDocumentInfo ()number_of_pages = pdf.getNumPages ()txt = f”“”信息{pdf_path}:作者:{information.author}创造者:{information.creator}制作人:{information.producer}主题:{information.subject}标题:{information.title}页数:{number_of_pages}”“”打印(txt)返回信息if __name__ = =“__main__”:路径= ' example.pdf 'extract_information(路径)在这里,您使用了为进口PdfFileReader PyPDF2包。它是一个类包含不同方法与PDF文件。在上面的示例中,在实例的DocumentInformation返回后调用.getDocumentInfo ()。

所有你需要的信息在PDF可以提取。对于返回的页面数量,您需要调用.getNumPages ()。

上面的例子中使用的信息变量属性,可用于从文档中提取剩余的元数据。你甚至可以打印的信息并将其保存,以供将来使用。

有一个.extractText()函数中PyPDF包可用于提取文本页面上的对象。

然而,很多次这个方法是不成功的。在一些PDF,你会得到文本和在其他情况下,你会得到一个空字符串。最好的包从PDF在Python中提取文本PDFMiner项目更健壮,是专门设计来提取从PDF。

旋转

超过通常你必须处理pdf文档的页面以景观模式而不是竖屏模式。然后甚至可以颠倒。这种情况当有人通过扫描他们创建一个文档。使用Python,您将能够旋转这些页面。

这是一个例子,你将能够理解如何旋转几页的PDF PyPDF2包:

# rotate_pages.py从进口PdfFileReader PyPDF2 PdfFileWriterdef rotate_pages (pdf_path):pdf_writer = PdfFileWriter ()pdf_reader = PdfFileReader(路径)#旋转90度右页page_1 = pdf_reader.getPage (0) .rotateClockwise (90)pdf_writer.addPage (page_1)#左页90度旋转page_2 = pdf_reader.getPage (1) .rotateCounterClockwise (90)pdf_writer.addPage (page_2)#添加一个页面在正常的方向pdf_writer.addPage (pdf_reader.getPage (2))张开(“rotate_pages。跳频pdf”、“白平衡”):pdf_writer.write(跳频)if __name__ = =“__main__”:路径= ' example.pdf 'rotate_pages(路径)

在这种情况下,除了PdfFileReader外,你还必须导入PdfFileWriter将不得不编写一个新的PDF。您想修改的页面的路径通过rotate_pages ()。这还需要创建一个作家对象命名pdf_writer和读者对象命名pdf_reader内部函数。接下来,您必须获得所需的页面修改。

GetPage ()。在上面的例子中,我们从第一页开始,这是零页。然后,通过调用.rotateClockwise后在90度(),页面的对象。为第二页你通过90度后调用.rotateCounterClockwise ()。通过PyPDF2,您可以只在增加90度旋转一个页面。将提高AssertionError之外其他的事情。

每次你打电话后旋转方法,需要调用.addPage ()。这样做是为了增加页面的旋转版本作者对象。最后一步是使用.write()写出新PDF。这个函数的参数是一个类文件对象。

合并

合并pdf
合并pdf来源——drupal

PyPDF2包,你可以将两个或两个以上的PDF文档合并到一个PDF文档。例如,您有几种类型的报告,需要一个标准的封面页。处理这种类型的情况下,您可能需要的帮助Python和PyPDF2包。

在这里,我们已经提到了一个例子,你会一起合并pdf文档。

# pdf_merging.py从进口PdfFileReader PyPDF2 PdfFileWriterdef merge_pdfs(路径、输出):pdf_writer = PdfFileWriter ()路径的路径:pdf_reader = PdfFileReader(路径)页面的范围(pdf_reader.getNumPages ()):#每个页面添加到作者对象pdf_writer.addPage (pdf_reader.getPage(页面)#写出合并PDF张开(输出,“世界银行”):pdf_writer.write(出)if __name__ = =“__main__”:= [' document1路径。pdf”、“document2.pdf ']merge_pdfs(路径,输出=“merged.pdf”)

merge_pdfs()使用的是当你想一起合并pdf文档的列表。你必须意识到你想要的位置保存结果。此函数接受它的输入路径的列表和输出保存合并输出。

正如你所看到的,创建一个循环的输入和创建一个PDF阅读器对象对于每一个输入。下一步是遍历页的PDF文件,并添加所有页面本身使用.addPage ()。毕竟页面一直迭代所有的PDF文档,最终的结果是写在一个PDF。

PyPDF2的另一个特点是,如果你不想合并所有页的PDF和想要添加的页面,您可以增强脚本。您还可以使用argparse模块或Python函数的创建命令行界面。

分裂

相反的合并,分裂出一个几页的PDF文档。这是非常有益的,当你使用PDF文档,有很多在这里扫描的内容可能会重复,你可能不需要它或任何其他理由,你可能需要把PDF文件。

这里有一个例子使用PyPDF2分裂一个PDF为多个文件:

# pdf_splitting.py从进口PdfFileReader PyPDF2 PdfFileWriterdef分裂(路径,name_of_split):pdf = PdfFileReader(路径)页面的范围(pdf.getNumPages ()):pdf_writer = PdfFileWriter ()pdf_writer.addPage (pdf.getPage(页面)输出= f“{name_of_split}{页面}. pdf”张开output_pdf(输出,“世界银行”):pdf_writer.write (output_pdf)if __name__ = =“__main__”:路径= ' Jupyter_Notebook_An_Introduction.pdf 'split(路径,“jupyter_page”)

正如你所看到的在上面的示例中,创建一个PDF阅读器对象,然后循环的所有页面。创建一个新的PDF作家实例和一个页面添加每一页的PDF。这时,一个惟一的名称用于编写页面的文件。脚本运行完成后,你将每一页的PDF分成多个PDF文件。

添加水印

水印是一种识别模式和数字图像和打印文档。可以看到一些水印在特殊的照明条件。水印是一个覆盖,是非常重要的,因为他们允许保护知识产权的喜欢你的pdf文件或图像。

对水印的帮助文档你可以把Python和PyPDF2包。练习这个,你需要有一个水印文本或图像使用PDF。看看这个例子:

# pdf_watermarker.py从进口PdfFileWriter PyPDF2 PdfFileReaderdef create_watermark (input_pdf、输出水印):watermark_obj = PdfFileReader(水印)watermark_page = watermark_obj.getPage (0)pdf_reader = PdfFileReader (input_pdf)pdf_writer = PdfFileWriter ()#水印的所有页面页面的范围(pdf_reader.getNumPages ()):页面= pdf_reader.getPage(页面)page.mergePage (watermark_page)pdf_writer.addPage(页面)张开(输出,“世界银行”):pdf_writer.write(出)if __name__ = =“__main__”:create_watermark (input_pdf = ' Jupyter_Notebook_An_Introduction.pdf ',输出= ' watermarked_notebook.pdf ',水印=“watermark.pdf”)

有三个参数,可以接受create_watermark ():

Input_pdf:这是你的PDF文件把水印。

Output_pdf:这是路径,你会保存PDF的水印。

水印:这就是你救了你的水印的PDF文本或图像。

在代码中可以看到,你必须打开PDF水印,水印的文档的第一页。下一步是创建一个PDF阅读器对象使用一个input_pdf和pdr-writer对象写水印的PDF。

在这之后,你必须遍历所有input_pdf页面。你调用后通过watermark_page .mergePage ()。这将把watermark_page放在当前页面。最后一步是使用pdf_writer对象添加新页面合并PDF瞧!你会有你的PDF水印。

加密

目前,您可以添加一个用户和一个所有者密码使用PyPDF2包。与业主的密码,你会有管理权限的PDF。你也可以设置权限的文档。用户密码允许你刚读文档。

PyPDF2,您可以设置所有者密码即使你可以设置文档的任何许可。因此,对于加密PDF,您可以添加密码。看看这个例子:

# pdf_encrypt.py从进口PdfFileWriter PyPDF2 PdfFileReaderdef add_encryption (input_pdf、output_pdf、密码):pdf_writer = PdfFileWriter ()pdf_reader = PdfFileReader (input_pdf)页面的范围(pdf_reader.getNumPages ()):pdf_writer.addPage (pdf_reader.getPage(页面)pdf_writer。加密(user_pwd =密码,owner_pwd =没有use_128bit = True)张开(output_pdf wb)跳频:pdf_writer.write(跳频)if __name__ = =“__main__”:add_encryption (input_pdf =“reportlab-sample.pdf”,output_pdf = ' reportlab-encrypted.pdf ',密码= twofish的)

add_encryption()使用PDF路径输入以及输出以及密码,你必须添加到PDF。接下来,打开PDF的作家和读者对象。现在,你将需要一个迭代的所有页的PDF创建一个循环,并将它们添加到作家PDF加密完成输入。

最后一步是调用the.encrypt(),你必须把所有者密码,用户密码,是否128位加密的PDF文件。默认设置是128 -加密。你需要设置40位加密设置为False。

据pdflib.com,使用的加密PDF AES(高级加密标准)或RC4。但是你必须记住,即使加密您的PDF,这并不意味着它是安全的。有几个工具可以删除密码。

读表数据

阅读表数据,你必须使用Tabula-py。第一步是安装它首先通过下面的命令:

pip安装tabula-py

这是你需要做的是提取数据:

进口牌

#阅读PDF文件,其中包含表数据#你可以找到完整的代码的pdf文件# read_pdf将保存pdf表格到熊猫Dataframedf = tabula.read_pdf (“offense.pdf”)#为了打印表的前5行df.head ()

如果有多个文件出现在PDF文件中,你必须使用以下命令:

df = tabula.read_pdf (“offense.pdf multiple_tables = True)

中提取特定的信息从一个特定页面的PDF文件,您需要使用这个:

tabula.read_pdf(“进攻。pdf”,面积=(126149212462),页= 1)

将输出到一个JSON格式,你需要试试这个:

tabula.read_pdf(“进攻。pdf”, output_format = " json ")

使用下面的命令将PDF转换成CSV或Excel文件:

tabula.convert_into(“进攻。pdf”、“offense_testing。xlsx”, output_format=”xlsx”)

了解更多关于使用PDF包,你可以尝试以下资源:

  • 的Github页面PyPDF4
  • ReportLab网站
  • PyPDF2网站
  • 卡米洛特:PDF表提取人类
  • 的Github页面pdfrw
  • 的Github页面PDFMiner
  • 使用PyPDF2在Python中使用PDF文件
  • 使用PDF、Word文档
  • StackOverflow问题的答案如何ex束表从PDF使用Python作为文本吗?

所以总的来说,你需要明白PyPDF2包快,很有用的。它可以用于大型自动化工作和使用它的功能做更好的工作。

最终的想法

通过Python编程课程你可以成为一个Python编程语言的主人和一个非常熟练的Python程序员。任何有抱负的程序员可以从Python的基础知识,经过巧妙避开Python。

《阿凡达》的niharika马亨德拉
Niharika Mahendra
一位热情的内容作家和营销人员与写作两年的专业知识和管理数字营销的内容。她是精通写作网站内容、博客、白皮书、业务络脉、案例研究和数字营销的内容。她热衷于数字营销,不断更新的最近更新和数字营销趋势。

留下你的评论

你的电子邮件地址将不会被发表。必填字段标记*

受欢迎课程

认证的数字营销大师(CDMM)


4 - 7个月 在线
6月1日开始,2、3、4、2023
  • 涵盖了所有数字营销技术

365beplay体育手机


4个月 在线
2023年7月24日开始
  • 掌握数字媒体(付费媒体的专业知识)

数字营销在线研讨会

7月 01
即将到来的

数字营销的职业和业务增长

Raj沙玛,数字维迪雅团队 上午11 - 12点(IST)
4月 28
完成

在线广告的状态:趋势,挑战和机遇

营销领导人Paytm内幕,认识到和数字维迪雅 03:00 PM内点(IST)
3月 24
完成

革新与人工智能数字营销

营销领导人Merkle Sokrati、3 m、超级VIP和印度工业有限公司 03:00 PM内点(IST)

与职业顾问讨论

不确定,如何学习和如何帮助你?

打电话给我们 即时聊天 免费的课程
滚动到顶部
Baidu
map