把扫描版合同放进知识库,检索任何关键词都命中不了,解析出来的文本几乎全是空白和乱码。
一开始怀疑是「页面倾斜导致识别错行」,查了一圈,方向不对。
把日志和配置对完,能解释这个现象的基本就这几处。PDF 里只有图片,没有可提取的文本层。也可能是扫描分辨率太低,文字粘连严重。
少数情况下是印章和背景噪声被识别成字符。
上来先确认页面是否有文本层
python -c "import fitz;print(len(fitz.open('a.pdf')[0].get_text()))"
提高分辨率并灰度化后识别
python -c "from PIL import Image;im=Image.open('p.png').convert('L');im.save('g.png')"
接着用成熟引擎做中文识别
python -c "from paddleocr import PaddleOCR;print(PaddleOCR(lang='ch').ocr('g.png')[0][:2])"
识别后做一次关键词抽样验证
python -c "print('合同' in text, len(text))")
当时还开着另一个排查窗口,两边日志对照着看才定位到。
改完先别撤,确认这几项。解析出的文本长度正常,检索合同里的关键条款能命中,答案引用到正确页码。
扫描件识别质量决定后续一切,图片模糊时先做增强再识别,比换更大的语言模型有用得多。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。