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

使用PyMuPDF提取PDF文本时出现乱码的解决方法咨询

PyMuPDF提取PDF文本时出现乱码的解决方法咨询

嘿,我来帮你看看这个问题!你遇到的这些奇怪的编码字符(比如\xc2\x91\xc2\x99\x03这类),大概率是几个小细节没处理好导致的,咱们一步步来解决:

  • 别手动对get_text()的结果做encode操作:PyMuPDF的get_text()方法默认返回的就是Unicode字符串,你额外调用.encode('utf-8')反而可能把原本正常的字符搞乱。先把代码改成这样试试:

    import PyMuPDF
    doc = PyMuPDF.open('uber-report.pdf')
    text = doc[1].get_text()
    print(text)
    
  • 调整文本提取的参数:如果还是有乱码,可以给get_text()加上提取标志,过滤掉控制字符和非标准格式代码。比如使用TEXTFLAGS_TEXT标志,只保留纯文本内容:

    text = doc[1].get_text(flags=PyMuPDF.TEXTFLAGS_TEXT)
    

    另外,也可以尝试用块模式提取(get_text("blocks")),它会返回页面上的文本块列表,你可以从中筛选出干净的文本内容。

  • 手动清理残留乱码:要是上面的方法后还有少量奇怪字符,可以用正则表达式过滤掉非打印的控制字符:

    import re
    clean_text = re.sub(r'[\x00-\x1F\x7F-\x9F]', '', text)
    print(clean_text)
    

    这个正则会去掉所有ASCII控制字符和一些非标准的扩展字符。

  • 排查PDF字体问题:如果PDF本身的字体嵌入不完整,PyMuPDF可能无法正确解析某些字符。这种情况下可以试试OCR识别(需要提前安装Tesseract OCR和pytesseract库):

    import pytesseract
    from PIL import Image
    
    page = doc[1]
    pix = page.get_pixmap()
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    ocr_text = pytesseract.image_to_string(img)
    print(ocr_text)
    

备注:内容来源于stack exchange,提问作者Ankit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:03:06