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)
相关推荐
EasyGBS3 小时前
摄像头还在线,画面已经不能用了?国标GB28181视频平台EasyGBS视频质量诊断怎么用
服务器·安全·音视频
仍然.3 小时前
Redis---缓存
数据库·redis·缓存
Aloudata3 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
程序员-Benothing3 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
细嗅蔷薇@4 小时前
排序和分⻚(order by 、limit)
数据库·oracle
鲲穹AI种草4 小时前
PDF 编辑工具怎么选,多款工具实际使用情况整理
pdf·pdf 编辑工具
wdfk_prog4 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
‎ദ്ദിᵔ.˛.ᵔ₎4 小时前
linux 进程信号 (上)
linux·服务器
逸模4 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模