当前位置: 代码网 > it编程>前端脚本>Python > python实现读取学术论文PDF文件内容

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

2024年10月23日 Python 我要评论
1、pypdf2pypdf2 是一个常用的库,可以用来读取、合并、分割和修改pdf文件。读取pdf内容:import pypdf2# 打开pdf文件with open('ellk-net_an_eff

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com