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)
相关推荐
AI探索先锋1 分钟前
Ubuntu 20.04下MySQL 8.4.3 LTS离线安装全攻略
linux·服务器·mysql·ubuntu
开心呆哥14 分钟前
【python翻译软件V1.0】
java·服务器·python
觅远1 小时前
python+pdfplumber:提取和分析PDF中的表格、文本等数据,实现pdf转图片、CSV、JSON、dict
开发语言·python·pdf
Minxinbb1 小时前
一文读懂MySQL数据类型
数据库·mysql·dba
Jonathan Star1 小时前
fastgpt 调用api 调试 写 localhost, 127.0.0.1不行,要 ipconfig 找到本机ip
服务器·网络协议·tcp/ip
程序员学习随笔1 小时前
PostgreSQL技术内幕22:vacuum full 和 vacuum
数据库·postgresql
sevevty-seven1 小时前
MySQL innodb中一条sql的执行流程
数据库·sql·mysql
xiaopzi1231231 小时前
宝塔安装mongodb后,写脚本监控运行状态,关闭后自动重启
linux·运维·服务器
smilejingwei1 小时前
从 SQL 到 SPL:组内查找最近的匹配记录
数据库·sql·数据分析·数据分析工具·esprocspl
步、步、为营1 小时前
解锁 C# 与 LiteDB 嵌入式 NoSQL 数据库
数据库·c#