为何pypdf提取文本时插入多余空格,Windows搜索及Adobe却可正常识别?
pypdf提取文本出现多余空格,Windows搜索却能识别正常文本的原因
核心原因在于PDF文本存储与提取的逻辑差异:
- PDF的文本存储特性:PDF里的文本并非按连续字符串保存,而是以单个字符为单位记录坐标位置,再逐个渲染到页面上。Adobe Reader和Windows搜索直接读取PDF内嵌的原始文本流(未经过位置计算的原生字符串),所以能拿到没有多余空格的正确内容。
- pypdf的提取逻辑:pypdf在提取文本时,会通过计算字符间的横向坐标间距来判断是否需要插入空格——当两个字符的间距超过预设阈值时,就会自动添加空格。部分PDF中,字符视觉上是连续的,但底层坐标间距刚好触发了这个阈值,就会出现多余空格,这是pypdf在3.11.0及更早版本里的已知处理逻辑问题。
你的代码示例:
from pypdf import PdfReader reader = PdfReader(path) for page in reader.pages: text = page.extract_text() lines = text.splitlines()
文本对比:
Acrobat Reader显示的内容:
HERMES INVESTMENT MGMT US SMID Equity L Hgd Acc (GBP)
pypdf提取的内容:
HERMES INVESTMEN T MGMT US SMID Equ ity L Hgd Acc (GBP)
内容的提问来源于stack exchange,提问作者PMSK
相关产品推荐
相关产品推荐

