python 扫描pdf,读取为文字

一、前言


前几天想到python能不能扫描pdf的内容,变为文字显示出来。查完资料,发现有一个库可以pdfplumber

二、准备工作

先安装模块(库)

1
pip install pdfplumber
1
pip install pymupdf
1
pip install PyPDF2

#三、实现

使用 pdfplumber库

文字信息提取

  • 利用pdfplumber打开一个PDF文件

    • 获取指定页,或者便利每一页
    • 利用.extract_text()方法提取当前页的文字

    代码如下:

    1
    2
    3
    4
    5
    6
    # 提取pdf文字
    import pdfplumber
    with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf:
    page01 = pdf.pages[0] #指定页码
    text = page01.extract_text()#提取文本
    print(text)

提取所有页pdf文字

代码如下:

1
2
3
4
5
import pdfplumber
with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()#提取文本
print(text)

提取PDF表格

代码如下

1
2
3
4
5
6
7
# 提取pdf表格
import pdfplumber
with pdfplumber.open("D:\\pdffiles\\人力资源部岗位编制.pdf") as pdf:
page01 = pdf.pages[0] #指定页码
table1 = page01.extract_table()#提取单个表格
# table2 = page01.extract_tables()#提取多个表格
print(table1)

提取图片

对于图片提取,现在没有任何一个模块(库)可以做到百分之百的提取。文本只介绍基于fitz模块的代码,基本思路是通过正则查找图片并将其输出

PyPDF2 中有两个最常用的类:PdfFileReader和PdfFileWriter,分别用于读取 PDF 和写入 PDF。其中PdfFileReader传入参数可以是一个打开的文件对象,也可以是表示文件路径的字符串。而PdfFileWriter则必须传入一个以写方式打开的文件对象。

查看评论