python实现读取学术论文PDF文件内容

 更新时间:2024年10月23日 09:19:44   作者:IT修炼家  
这篇文章主要为大家详细介绍了如何通过python实现读取学术论文PDF文件内容的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1、PyPDF2

PyPDF2 是一个常用的库,可以用来读取、合并、分割和修改PDF文件。读取pdf内容:

import PyPDF2

# 打开PDF文件
with open('ELLK-Net_An_Efficient_Lightweight_Large_Kernel_Network_for_SAR_Ship_Detection.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    # 获取页面数
    num_pages = len(reader.pages)
    print(f"页面数: {num_pages}")
    
    # 读取每一页的文本
    for i in range(num_pages):
        page = reader.pages[i]
        text = page.extract_text()
        print(f"第 {i + 1} 页的内容:\n{text}")

结果如下:

效果: 可以看出,读取是从左往右,从上往下,文本内容读取的还挺全的,但是图片、表格都读不出来。

2、pdfplumber

pdfplumber 是一个功能强大的库,专门用于提取PDF文件中的文本和表格数据。读取PDF内容:

import pdfplumber

# 打开PDF文件
with pdfplumber.open('example.pdf') as pdf:
    for i in range(len(pdf.pages)):
        page = pdf.pages[i]
        text = page.extract_text()
        print(f"第 {i + 1} 页的内容:\n{text}")

结果如下:

效果: 看结果,这个库读取PDF是一整行一整行读取的,当文档内容是两页的时候,两列同一行会被同时读取。看别人说读取表格方便,但是这里也没读取出来,具体如下图所示。

此外,使用table = page.extract_table()单独读取有表格的页,输出结果为None

3、PyMuPDF

PyMuPDF 是另一个高效的库,可以处理PDF文件,支持文本提取、图像提取等功能。读取pdf如下:

import fitz  # PyMuPDF
from PIL import Image
import io
# 打开PDF文件
doc = fitz.open('ELLK-Net_An_Efficient_Lightweight_Large_Kernel_Network_for_SAR_Ship_Detection.pdf')
for page_number,page in enumerate(doc):
    text = page.get_text()
    print(f"第 {page.number + 1} 页的内容:\n{text}")
    # 获取页面中的所有图片
    image_list = page.get_images(full=True)
    # 遍历所有图片
    for img_index, img in enumerate(image_list):
        # 图片的XREF
        xref = img[0]
        # 获取图片对象
        base_image = doc.extract_image(xref)
        # 获取图片的二进制数据
        image_bytes = base_image["image"]
        # 将二进制数据转为PIL图像
        image = Image.open(io.BytesIO(image_bytes))
        # # 左右翻转
        # image = image.transpose(method=Image.FLIP_LEFT_RIGHT)
        # 上下翻转
        image = image.transpose(method=Image.FLIP_TOP_BOTTOM)
        # 获取图片的扩展名
        image_ext = base_image["ext"]
        # 保存图片
        # with open(f"page_{page_number + 1}_img_{img_index + 1}.{image_ext}", "wb") as image_file:
        #     image_file.write(image_bytes)
        image.save(f"page_{page_number + 1}_img_{img_index + 1}.{image_ext}")
        print(f"第 {page_number + 1} 页中提取的图片 {img_index + 1} 已保存。")

读取效果如下:

效果:文字提取效果与PyPDF2差不多,不同点是遇到大的空格会直接换行。可以读取图片,我这里发现读取的图片需要上下翻转。插入的图片可以直接读取,但是流程图可能因为是visio画的,读取不出来。另外,三线表格还是没有读取出来。

4、pdfminer

pdfminer.six 是一个专注于从PDF文件中提取文本和元数据的库。读取PDF如下:

from pdfminer.high_level import extract_text

# 提取文本
text = extract_text('example.pdf')
print(text)

读取结果:

效果: 读取结果整体空行多。读取方式按行读取,有左右两列的时候,哪一列先读到就读哪一列,因此顺序可能会错乱,就像上面结果图一项,该页内容先读取的右边的列。

总结

看网上的说法是:

PyPDF2:适合基本的PDF操作,如合并和提取文本。

pdfplumber:非常适合提取文本和表格。

PyMuPDF:功能强大,处理速度快,支持多种操作。

pdfminer.six:更适合复杂的文本提取需求。

但在读取类似上面这样的论文文档时,PyPDF2和PyMuPDF感觉好用点。

到此这篇关于python实现读取学术论文PDF文件内容的文章就介绍到这了,更多相关python读取PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python计算方差方式——pandas.series.std()

    使用python计算方差方式——pandas.series.std()

    这篇文章主要介绍了使用python计算方差方式——pandas.series.std(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python PCA降维的两种实现方法

    Python PCA降维的两种实现方法

    大家好,本篇文章主要讲的是Python PCA降维的两种实现方法,感兴趣的的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python使用pyshp读写shp文件的实现

    python使用pyshp读写shp文件的实现

    本文主要介绍了python使用pyshp读写shp文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 用python编写一个图片拼接工具

    用python编写一个图片拼接工具

    大家好,本篇文章主要讲的是用python编写一个图片拼接工具,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • python实现双人版坦克大战游戏

    python实现双人版坦克大战游戏

    这篇文章主要为大家详细介绍了python实现双人版坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Python中py文件引用另一个py文件变量的方法

    Python中py文件引用另一个py文件变量的方法

    下面小编就为大家分享一篇Python中py文件引用另一个py文件变量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python中集合的内置函数详解

    Python中集合的内置函数详解

    这篇文章主要介绍了Python中集合的内置函数详解,集合在python里面是另外一种对象,它的特征是在大括号里面,并且各个元素是唯一的,今天我们来看一下其内置了哪些函数,需要的朋友可以参考下
    2023-08-08
  • 详解如何使用Python实现过滤指定进程

    详解如何使用Python实现过滤指定进程

    Python提供了多种方式来实现对进程的过滤和操作,本文将介绍如何利用Python来过滤指定进程,并展示一些实用的技巧和方法,希望对大家有所帮助
    2024-04-04
  • 详解python列表(list)的使用技巧及高级操作

    详解python列表(list)的使用技巧及高级操作

    这篇文章主要介绍了详解python列表(list)的使用技巧及高级操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python如何获取文件当前位置和定位某个位置

    python如何获取文件当前位置和定位某个位置

    这篇文章主要介绍了python如何获取文件当前位置和定位某个位置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论