
文件处理工具让Agent读懂PDF、Word、Excel企业里的知识很多藏在文档里。产品手册、技术方案、合同、报表各种格式都有。Agent要用上这些知识首先得能读懂这些文档。这一篇我们讲文件处理。PDF怎么读Word怎么解析Excel怎么处理。有哪些常用的库怎么用LangChain的文档加载器以及处理不同格式的时候要注意什么。文档加载器是什么LangChain里有个概念叫Document Loader文档加载器。它的作用就是把各种格式的文件读成统一的文本文档格式方便后面处理。不同格式的文件有不同的加载器。PDF有PDF的加载器Word有Word的Excel有Excel的。用法都差不多导入以后加载就行。加载出来的结果是一个Document对象列表。每个Document有两个主要属性page_content是文本内容metadata是元数据比如文件名、页码这些。统一的格式有个好处。后面做RAG、做检索、做分析不用关心原始文件是什么格式统一处理文本就行。PDF处理PDF是最常见的文档格式也是最难处理的。PDF格式本质上是一堆排版指令。它记录的是文字放在第几页第几行、用什么字体、多大字号。它没有段落、“章节”、表格这些逻辑结构的概念。所以读PDF容易出现各种问题。文字顺序乱了表格读不出来图片里的文字识别不到。最简单的PDF读取用PyPDFLoader。fromlangchain_community.document_loadersimportPyPDFLoader loaderPyPDFLoader(example.pdf)pagesloader.load()forpageinpages:print(f第{page.metadata[page]}页)print(page.page_content[:200])PyPDFLoader是纯Python实现的不用装额外的依赖。读简单的PDF够用了。复杂排版的PDF效果一般表格和图片基本处理不了。要更好的效果可以用PyMuPDFLoader。fromlangchain_community.document_loadersimportPyMuPDFLoader loaderPyMuPDFLoader(example.pdf)docsloader.load()PyMuPDF的解析效果比PyPDF好一些速度也更快。需要单独安装pymupdf。pipinstallpymupdf如果PDF里有图片图片上也有文字那就需要OCR了。可以用UnstructuredPDFLoader或者PaddleOCR。fromlangchain_community.document_loadersimportUnstructuredPDFLoader loaderUnstructuredPDFLoader(example.pdf,ocrTrue)docsloader.load()Unstructured功能很全支持的格式也多就是依赖比较重安装起来麻烦一点。处理PDF是个大坑。不同的PDF生成工具出来的文件质量天差地别。有的PDF读出来整整齐齐有的读出来全是乱的。实际项目里要针对你遇到的PDF类型选合适的工具可能还要写一些后处理的逻辑。Word文档处理Word文档比PDF好处理多了。Word有明确的段落、标题、表格结构读出来顺序一般不会乱。用Docx2txtLoader。fromlangchain_community.document_loadersimportDocx2txtLoader loaderDocx2txtLoader(example.docx)docsloader.load()print(docs[0].page_content)需要装docx2txt。pipinstalldocx2txt这个加载器会把Word里的文字都读出来包括标题、段落、表格里的文字。格式信息会丢掉但文字内容基本没问题。如果需要更精细的处理比如要区分标题级别、要提取表格结构可以用python-docx库自己写。fromdocximportDocument docDocument(example.docx)# 读段落forparaindoc.paragraphs:ifpara.style.name.startswith(Heading):print(f标题{para.text})else:print(para.text)# 读表格fortableindoc.tables:forrowintable.rows:forcellinrow.cells:print(cell.text,end\t)print()自己写的好处是能拿到结构信息。哪些是标题、哪些是正文、哪些是表格都分得清。做知识库的时候结构信息很有用。Excel表格处理Excel也是常见的格式。产品价格表、销售数据、人员名单经常是Excel的。最简单的读取用UnstructuredExcelLoader。fromlangchain_community.document_loadersimportUnstructuredExcelLoader loaderUnstructuredExcelLoader(example.xlsx,modeelements)docsloader.load()它会把Excel里的内容读出来转成文本。适合内容不复杂的表格。如果是数据表格需要做数据分析直接用pandas更方便。importpandasaspd dfpd.read_excel(example.xlsx,sheet_nameSheet1)print(df.head())用pandas可以做筛选、统计、聚合各种数据分析操作。把分析结果再传给Agent比让Agent直接读原始表格高效得多。Excel有个特殊的地方。它不是纯文本文档它有数据结构。做RAG的时候直接把Excel转成纯文本效果往往不好。数据之间的关系丢失了检索也不准。处理Excel数据更好的方式是存到数据库里然后用Text-to-SQL的方式查询。或者用pandas做数据分析Agent让Agent写Python代码来处理数据。其他格式PPT演示文稿。用UnstructuredPowerPointLoader可以读。PPT通常文字少、图片多纯文本提取的效果一般。做知识库的话价值不大。纯文本文件。最简单直接读就行。fromlangchain_community.document_loadersimportTextLoader loaderTextLoader(example.txt,encodingutf-8)docsloader.load()CSV文件。可以用CSVLoader也可以直接用pandas。fromlangchain_community.document_loadersimportCSVLoader loaderCSVLoader(file_pathexample.csv)docsloader.load()HTML网页。网页的处理后面会专门讲。这里先提一下有UnstructuredHTMLLoader和BSHTMLLoader。Markdown。最友好的格式结构清晰纯文本直接读就行。选什么工具这么多格式这么多工具怎么选。我的建议是先确定你主要处理什么格式的文档。主要是PDF优先试PyMuPDF。效果不够再加OCR。主要是Word用Docx2txt就够了。需要结构信息就自己用python-docx写。主要是Excel和CSV用pandas。做数据分析比纯文本检索靠谱。格式很杂什么都有用Unstructured全家桶。它支持的格式最多就是重一点。不要一开始就追求完美。先把最简单的方案跑起来看看效果够不够用。不够了再升级。很多时候PyPDF加简单的文本分割做出来的知识库效果就已经不错了。下一篇我们讲API调用工具。让Agent调用第三方API接入各种外部服务。