Azure函数Blob触发器提取PDF文本:字符间多余空格问题
解决PyPDF2提取PDF文本字符间大量多余空格的问题
PyPDF2的文本提取机制对部分PDF文件(尤其是采用特殊字体布局或嵌入方式的文件)支持不足,容易出现字符拆分、多余空格的问题。以下是两种有效的解决方式:
方案一:改用PyMuPDF(fitz)提取文本
PyMuPDF的文本提取精度远优于PyPDF2,对复杂排版的PDF兼容性更好。具体修改步骤如下:
- 安装依赖包
pip install pymupdf
- 替换原有的PDF读取与文本提取代码
将你原来使用PyPDF2的部分替换为以下代码:
from io import BytesIO import fitz stream = BytesIO() blob_download_pdf.download_to_stream(stream) # 以PDF格式打开字节流 doc = fitz.open("pdf", stream) # 提取第一页文本 text_pdf = doc[0].get_text() # 关闭文档释放资源 doc.close()
方案二:正则清理提取后的文本(临时应急方案)
如果暂时无法更换依赖库,可以用正则表达式合并连续多余空格,但这种方法可能会误删合理的空格(比如英文单词间的空格),仅建议作为临时处理手段:
import re # 保留原PyPDF2提取代码 text_pdf = fileReader.getPage(0).extractText() # 替换连续多个空格为单个空格,并去除首尾空格 cleaned_text = re.sub(r'\s+', ' ', text_pdf).strip() # 使用cleaned_text替换原text_pdf进行后续上传
替换完成后重新执行代码,提取的文本即可恢复正常格式。
内容的提问来源于stack exchange,提问作者Egidio Gaudioso
相关产品推荐
相关产品推荐

