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

Python使用pdfrw读取PDF流出现乱码如何获取正常编码内容

乱码原因

你直接读取的x.pages[0].Contents.stream是PDF页面的原始二进制内容流,通常会经过FlateDecode等压缩算法压缩,同时存储的是PDF绘制指令而非直接的纯文本内容,所以直接打印会显示为乱码。

解决方案

方法一:使用pdfplumber提取文本(推荐,多语言适配好、准确率高)

  • 先安装依赖库:pip install pdfplumber
  • 运行以下代码即可提取可读文本:
import pdfplumber

file_path = 'C:/Users/Karapuz/Desktop/ser/163687_BMW_X5_M1_0151_Маланюк Евро.pdf'
with pdfplumber.open(file_path) as pdf:
    # 提取第一页文本
    first_page_text = pdf.pages[0].extract_text()
    print(first_page_text)

方法二:基于pdfrw处理(适合需要操作底层PDF流的场景)

如果必须使用pdfrw实现需求,需要先解压内容流,再从绘制指令中筛选文本,示例如下:

  • 依赖:Python自带zlib库无需额外安装
from pdfrw import PdfReader
from zlib import decompress, MAX_WBITS

file_path = 'C:/Users/Karapuz/Desktop/ser/163687_BMW_X5_M1_0151_Маланюк Евро.pdf'
pdf = PdfReader(file_path)
raw_stream = pdf.pages[0].Contents.stream

try:
    # 解压默认的FlateDecode压缩流
    decompressed_stream = decompress(raw_stream, -MAX_WBITS)
    # 解压后为PDF绘制指令,需额外解析才能拿到纯文本,此处仅打印解压后的原始指令
    print(decompressed_stream.decode('utf-8', errors='ignore'))
except Exception as e:
    print("流压缩格式不支持直接解压,建议使用第一种方案")

注:如果PDF包含俄文等非ASCII字符,第一种方案会自动处理编码适配,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 10:21:04