文档加载全攻略:PDF、网页与 Office
按文档类型选择合适的 Loader 与解析策略,避开扫描件、复杂表格等常见坑。
常见 Loader 速查
- TextLoader:纯文本,记得传
encoding="utf-8"; - PyPDFLoader:按页切分的 PDF 解析,保留页码 metadata;
- UnstructuredFileLoader:万能兜底(Word / HTML / Markdown / EML),依赖 unstructured 库;
- WebBaseLoader:抓网页正文(配 bs4 过滤导航噪声);
- DirectoryLoader:批量加载整个目录,按 glob 过滤。
Metadata 是检索的钥匙
每个 Document 都应带上可过滤的元数据:
docs = PyPDFLoader("产品手册.pdf").load()
for d in docs:
d.metadata["product"] = "旗舰版" # 后续可按此过滤检索
常见的坑
- 扫描版 PDF:无文本层,需要 OCR(Unstructured 的 ocr 模式或先转文字);
- 复杂表格:常规解析会打乱行列,优先用专用表格抽取再转为文本描述;
- 网页噪声:导航栏、页脚会污染检索,加载前先做正文提取;
- 编码问题:中文文本务必显式 utf-8。
加载后自检
for d in docs[:3]:
print(d.metadata, d.page_content[:100])
入库前抽样检查内容是否干净,比上线后排查 RAG 答非所问便宜得多。
📝 课后练习
quiz-1 扫描版 PDF 直接用常规 Loader 解析会失败,原因是?