如何用PyPDF2正确读取含印地语的非英文PDF文件?
解决印地语PDF文本提取乱码问题
PyPDF2对非拉丁字符(如印地语使用的天城文)的文本提取支持有限,尤其是处理嵌入字体或特殊编码的PDF时,容易出现乱码。以下是几种更可靠的解决方案:
方案1:使用PyMuPDF(fitz)
PyMuPDF对多语言文本的兼容性远优于PyPDF2,能更好地解析嵌入字体和复杂编码的内容。
- 安装依赖:
pip install pymupdf
- 提取文本的示例代码:
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同样对非英文文本有较好的支持,同时还能保留更多文本格式信息。
- 安装依赖:
pip install pdfplumber
- 提取文本的示例代码:
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工具识别:
- 安装依赖:
pip install pytesseract pillow
注意:需确保本地已安装Tesseract引擎,并添加印地语语言包(lang='hin')
- 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
相关产品推荐
相关产品推荐

