fitz获取pdf内容

1.获取pdf单页,及所有内容

python 复制代码
import fitz  # PyMuPDF

# 打开 PDF 文件
pdf_path = r"/data2/ljsang/0106/0725_Self-organization-of-plasticity-and-specialization-in-a-primi_2022_Cell-Syst.pdfπÇÉσö>>Σ╕ǵ╖ÿσ<<¥σ║ùΘô║∩╝ÜΦë╛τ▒│σ¡ªτñ╛πÇæ.pdf"
doc = fitz.open(pdf_path)

# 获取第一页
page = doc.load_page(0)

# 提取页面中的文本信息(以字典形式返回)
text_dict = page.get_text("dict")

# 遍历文本块
for block in text_dict["blocks"]:
    # 检查是否为文本块(type == 0)
    if block["type"] == 0:  # 0 表示文本块
        # 遍历行
        for line in block["lines"]:
            # 遍历字符片段
            for span in line["spans"]:
                text = span["text"]       # 文本内容
                font_size = span["size"]  # 字号大小
                font_name = span["font"]  # 字体名称
                print(f"文本: {text}, 字号: {font_size}, 字体: {font_name}")
    else:
        print(f"跳过非文本块,类型: {block['type']}")
python 复制代码
import fitz  # PyMuPDF

# 定义 PDF 文件路径
pdf_path = r"/data2/66.pdf"

# 打开 PDF 文件
with fitz.open(pdf_path) as pdf:
    # 获取 PDF 的总页数
    total_pages = len(pdf)
    print(f"PDF 文件总页数: {total_pages}")

    # 遍历每一页
    for page_num in range(total_pages):
        print(f"正在处理的页码为 {page_num + 1}...")

        # 获取当前页
        page = pdf.load_page(page_num)

        # 提取文本内容
        text = page.get_text("text")

        if text:
            print("提取的文本内容:")
            print(text)
        else:
            print("该页无文本内容。")

2.获取每篇pdf内容,以及DOI号

python 复制代码
import fitz  # PyMuPDF
import re
import os

# 正则表达式匹配 DOI 号
doi_pattern = re.compile(r'https?://(?:dx\.)?doi\.org/10\.\d{4}/[^/\s]+')

# 检查 PDF 是否包含 DOI 号
has_doi = False
doi_numbers = []

# PDF 文件路径
pdf_path = r"/data2/ljsang/0106/0725_Self-organization-of-plasticity-and-specialization-in-a-primi_2022_Cell-Syst.pdfπÇÉσö>>Σ╕ǵ╖ÿσ<<¥σ║ùΘô║∩╝ÜΦë╛τ▒│σ¡ªτñ╛πÇæ.pdf"

# 使用 fitz 打开 PDF 文件
pdf_document = fitz.open(pdf_path)

# 遍历每一页
for page_num in range(len(pdf_document)):
    page = pdf_document.load_page(page_num)  # 加载页面
    text = page.get_text()  # 提取文本内容

    # 检查文本中是否包含 DOI 号
    if text:
        dois = doi_pattern.findall(text)
        if dois:
            has_doi = True
            doi_numbers.extend(dois)

# 输出结果
print("DOI 号列表:", doi_numbers)
print("是否包含 DOI 号:", has_doi)
相关推荐
weixin_40689822几秒前
人大金仓pg模式批量检查表是否存在
数据库·oracle
墨白曦煜几秒前
Redis 故障检测进化论:从 Sentinel 到 Cluster 的机制演变
数据库·redis·sentinel
zsyy@3 分钟前
Maven本地仓库有jar还会向远程仓库下载依赖的问题
java·服务器·maven
无事好时节6 分钟前
网络编程基础:OSI 模型与 TCP/IP 协议栈详解
服务器
weixin_462446237 分钟前
【原创实践】使用 Docker 在 MySQL 容器中批量导出所有数据库
数据库·mysql·docker
2301_801760938 分钟前
事务传播机制
数据库·oracle
先生沉默先8 分钟前
c#Socket学习,使用Socket创建一个在线聊天,数据模型(2)
服务器·学习·c#
chalmers_1510 分钟前
基于该 WebSocket 脚本开展专业的压力测试
服务器·websocket·压力测试
小宇的天下12 分钟前
Synopsys Skipper 核心功能与使用指南(结构化总结)
运维·服务器
丁丁丁梦涛12 分钟前
nginx在多层服务器代理接口地址的应用
运维·服务器·nginx