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

如何用PyPDF2正确读取含印地语的非英文PDF文件?

解决印地语PDF文本提取乱码问题

PyPDF2对非拉丁字符(如印地语使用的天城文)的文本提取支持有限,尤其是处理嵌入字体或特殊编码的PDF时,容易出现乱码。以下是几种更可靠的解决方案:

方案1:使用PyMuPDF(fitz)

PyMuPDF对多语言文本的兼容性远优于PyPDF2,能更好地解析嵌入字体和复杂编码的内容。

  1. 安装依赖:
pip install pymupdf
  1. 提取文本的示例代码:
import fitz  # 导入PyMuPDF

pdf_path = "/content/drive/MyDrive/DARE_Hindi_AR_2014-15-1-1.pdf"
pdf_text = ""

with fitz.open(pdf_path) as doc:
    for page in doc:
        pdf_text += page.get_text()

print(pdf_text)

方案2:使用pdfplumber

pdfplumber同样对非英文文本有较好的支持,同时还能保留更多文本格式信息。

  1. 安装依赖:
pip install pdfplumber
  1. 提取文本的示例代码:
import pdfplumber

pdf_path = "/content/drive/MyDrive/DARE_Hindi_AR_2014-15-1-1.pdf"
pdf_text = ""

with pdfplumber.open(pdf_path) as pdf:
    for page in pdf.pages:
        pdf_text += page.extract_text()

print(pdf_text)

方案3:OCR识别(针对扫描版PDF)

如果你的PDF是扫描生成的图片型文档,上述文本提取方法都无效,需要用OCR工具识别:

  1. 安装依赖:
pip install pytesseract pillow

注意:需确保本地已安装Tesseract引擎,并添加印地语语言包(lang='hin')

  1. OCR提取文本的示例代码:
import fitz
import pytesseract
from PIL import Image

pdf_path = "/content/drive/MyDrive/DARE_Hindi_AR_2014-15-1-1.pdf"
pdf_text = ""

with fitz.open(pdf_path) as doc:
    for page in doc:
        # 将PDF页面转为图片
        pix = page.get_pixmap()
        img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
        # 识别印地语文本
        page_text = pytesseract.image_to_string(img, lang='hin')
        pdf_text += page_text

print(pdf_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:17:50