You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何获取在线PDF且不保存到本地直接转为字符串

实现方案

全程不需要把PDF保存到本地,核心是用io.BytesIO把requests拉取到的PDF二进制内容封装为内存中的类文件对象,直接传给PDF解析库提取文本即可。

步骤1:安装依赖

pip install requests pypdf

pypdf是纯Python实现的PDF解析库,不需要额外安装系统级依赖。

步骤2:完整可运行代码

import io
import requests
from pypdf import PdfReader

def online_pdf_to_text(url: str) -> str:
    resp = requests.get(url, timeout=30)
    # 请求失败直接抛出HTTP错误,避免后续解析无效内容
    resp.raise_for_status()
    # 将二进制响应封装为内存文件,全程无本地磁盘写入操作
    with io.BytesIO(resp.content) as mem_pdf:
        reader = PdfReader(mem_pdf)
        text_content = []
        # 逐页提取文本并拼接
        for page in reader.pages:
            page_text = page.extract_text()
            if page_text:
                text_content.append(page_text)
        return "\n".join(text_content)

# 调用示例
if __name__ == "__main__":
    url = 'xyzzy.org/g.pdf'
    result = online_pdf_to_text(url)
    # 对应示例场景会返回"I love programming."
    print(result)

补充说明

  • 如果遇到排版复杂的PDF出现文本提取不全、乱码问题,可以替换为pdfplumber库做解析,内存流处理逻辑完全不变,只需要把PdfReader替换为pdfplumber.open(mem_pdf),再按pdfplumber的接口提取页面文本即可,对复杂版式的提取精度更高。
  • 可以根据需求给requests添加请求头、代理、重试逻辑,适配有反爬限制的在线PDF资源场景。
  • 所有解析操作都在内存中完成,不会在本地磁盘生成任何临时PDF文件。

内容的提问来源于stack exchange,提问作者chez93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:03:25