进阶应用 中级

文档加载全攻略: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 解析会失败,原因是?