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)
相关推荐
qq_5298353517 分钟前
Redis作为缓存和数据库的数据一致性问题
数据库·redis·缓存
山猪打不过家猪5 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
qwy7152292581636 小时前
13-R数据重塑
服务器·数据库·r语言
Bio Coder6 小时前
R语言安装生物信息数据库包
开发语言·数据库·r语言
钊兵7 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
企鹅侠客8 小时前
开源免费文档翻译工具 可支持pdf、word、excel、ppt
人工智能·pdf·word·excel·自动翻译
weixin_425878238 小时前
Redis复制性能优化利器:深入解析replica-lazy-flush参数
数据库·redis·性能优化
左灯右行的爱情8 小时前
Redis数据结构总结-listPack
数据结构·数据库·redis
anddddoooo8 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl