问题出现得很突然,日志倒是留得挺全。用常见库解析 PDF 后文本里到处是硬换行,一句话被切成三四行,检索时按句匹配完全命中不了。
刚开始盯着「页眉页脚被当成正文混进段落」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。解析库按坐标逐行输出,保留了排版换行。少数情况下是双栏排版被按行交错拼接,语序错乱。
另外,连字符断词没有合并。
第一件事是按段落规则合并软换行
python -c "import re;print(re.sub(r'(?<=[^。!?\n])\n','',text))"
随后按版面区块抽取而不是纯文本流
python parse_pdf.py --mode blocks --input a.pdf
过滤重复出现的页眉页脚
python -c "print(collections.Counter(lines).most_common(3))"
修复行尾连字符造成的断词
python -c "print(text.replace('-\n',''))"
改完先别撤,确认这几项。合并后段落完整,一句话不再被拆散,检索命中率提升,摘要也更连贯。
补一句。双栏论文用纯文本流解析几乎必然错序,这类文档要按块坐标排序后再拼接,否则语义会完全乱掉。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。