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)
相关推荐
万邦科技Lafite5 分钟前
一键获取淘宝关键词商品信息指南
开发语言·数据库·python·商品信息·开放api·电商开放平台
程序猿20239 分钟前
MySQL的索引
数据库·mysql
m0_6925400712 分钟前
数据库表设计规范
数据库·oracle
Coder_Boy_16 分钟前
【人工智能应用技术】-基础实战-环境搭建(基于springAI+通义千问)(二)
数据库·人工智能
云贝教育-郑老师31 分钟前
【OceanBase OBCE V3.0认证】
数据库·oceanbase
深耕AI1 小时前
【wordpress系列教程】02 Blocksy主题
运维·服务器·前端
思成不止于此2 小时前
【MySQL 零基础入门】DDL 核心语法全解析:数据库与表结构操作篇
数据库·笔记·学习·mysql
aspirestro三水哥2 小时前
2.5构建Xenomai测试与演示镜像
数据库·rtos·xenomai
随机昵称_1234563 小时前
postgresql连接报错Invalid SCRAM client initialization
数据库·postgresql
gaize12133 小时前
服务器异常如何解决
运维·服务器