使用OCR构建MCP服务器:从设置难题到文档智能——概念证明
*设置具有高级PDF处理功能的Anthropic模型上下文协议服务器的真实旅程*
挑战:让Claude Desktop读取您的文档
你是否曾希望你的人工智能助手可以阅读你的扫描PDF、法律文件或HOA契约,而无需手动提取文本?这正是我们在本次会议中要实现的目标——构建一个自定义的MCP(模型上下文协议)服务器,该服务器不仅可以读取PDF,还可以使用OCR智能处理扫描的文档。
起点:遵循官方教程
我们首先按照Anthropic的官方MCP服务器教程来构建一个基本的天气服务器。看似简单的过程很快变成了Windows特定的调试冒险。
设置斗争
问题#1:缺少配置文件 第一个障碍是臭名昭著的“找不到claude_desktop_config.json”错误。默认情况下,此配置文件不存在-您需要在正确的位置手动创建它:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
问题#2:UV包管理器权限 本教程要求 uv (一个快速的Python包管理器),但我们的初始安装存在权限问题。解决方案是使用带有旁路标志的PowerShell作为管理员:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"问题3:项目脚本配置 即使有 uv 工作时,服务器无法运行,因为 pyproject.toml 错过了关键时刻 [project.scripts] 章节:
[project.scripts]
weather = "weather:main"构建天气服务器基础
一旦我们克服了设置问题,我们就有了一个使用这些工具运行的基本天气服务器:
get_forecast-任何城市的模拟天气预报get_alerts-美国各州天气警报
服务器成功连接到Claude Desktop,证明我们的MCP基础设施正常工作。
真正的目标:文档智能
有了基础,我们实现了主要目标——为扫描文档添加OCR支持的PDF阅读功能。这需要几个组件:
1.基本PDF阅读
使用 PyPDF2 对于可提取的文本PDF:
def extract_pdf_text(file_path: str, page_numbers: list[int] = None):
# Extract text from regular PDFs2.OCR集成
对于扫描文档,我们集成了:
- 小公主 -谷歌Tesseract OCR引擎的Python包装器
- pdf2图像 -将PDF页面转换为图像以进行OCR处理
- 枕头 -图像处理库
3.智能检测系统
服务器自动确定PDF是否需要OCR:
def has_extractable_text(file_path: str) -> bool:
# Checks if PDF has meaningful extractable text
# Falls back to OCR for scanned documents4.缓存系统
也许最有价值的功能是缓存OCR结果以避免重新处理:
- 缓存文件使用命名模式:
document_ocr_[hash].txt - 哈希确保源PDF更改时缓存无效
- 显著提高重复访问的性能
安全考虑
服务器包括内置的安全措施:
- 路径验证:只允许访问预定义的目录
- 文件类型限制:仅限于PDF文件
- 权限检查:在处理之前验证文件访问权限
ALLOWED_PDF_DIRECTORIES = [
"/path/to/your/documents",
"/path/to/your/pdfs",
"/path/to/your/downloads"
]真实世界测试:HOA文档分析
为了验证我们的系统,我们处理了实际的HOA契约文件:
- 输入:5.1 MB扫描的40多页PDF
- 处理:完全OCR提取和缓存
- 输出:完成关键条款的一页摘要
- 结果:通过缓存文本即时访问
该系统成功地从复杂的法律文件中确定了财产限制、评估程序、建筑控制和执行机制。
最终MCP工具库
我们完整的服务器提供以下功能:
文档工具:
read_pdf-使用自动OCR读取整个文档或特定页面list_pdfs-清点具有扫描/缓存状态的可用文档search_pdf_content-文档中的全文搜索
天气工具:
get_forecast-任何地点的天气预报get_alerts-各州天气警报
智能功能:
- 自动扫描PDF检测
- 智能OCR回退
- 持久缓存系统
- 安全第一文件访问
经验教训
Windows开发指南
- PowerShell执行策略可以阻止安装
- 路径分隔符在配置文件中很重要
- 权限问题在包管理器中很常见
2.OCR实施见解
- 需要系统依赖关系(Tesseract、Poppler)
- 缓存对于实际OCR性能至关重要
- 混合方法(文本提取+OCR回退)效果最佳
3.MCP架构优势
- 模块化工具设计允许轻松扩展功能
- 安全模型提供受控的文件系统访问
- 与Claude Desktop集成,打造无缝用户体验
性能影响
缓存系统提供了显著的性能改进:
- 首次访问:OCR处理约30-60秒
- 后续访问:距离缓存不足1秒
- 存储开销:文本缓存为原始PDF大小的10~20%
接下来是什么?
这个基础开辟了许多可能性:
- 与云OCR服务集成,以提高准确性
- 支持其他文档格式(DOCX、图像)
- 基于嵌入的语义搜索
- 文件比较和分析工具
- 自动汇总和提取管道
代码可用性
完整的MCP服务器代码包括:
- 全面的错误处理
- 全程键入提示
- 详细文件
- 生产就绪安全措施
- 用于附加工具的可扩展架构
结论
构建这个MCP服务器将一个基本教程转变为一个强大的文档智能系统。最初是调试配置问题,后来发展成为从扫描的法律文件中提取见解的实用工具。
真正的价值不仅在于技术实现,还在于文档分析的民主化。现在,任何人都可以要求他们的人工智能助手“总结我的HOA契约”或“我的租约中的关键限制是什么?”并从扫描的PDF中获得即时、准确的回复。
从设置到记录智能的旅程展示了MCP架构的强大功能和现实世界人工智能开发的实际挑战。有时候,最好的学习发生在事情没有按预期进行的时候。
______________________________________________________________________
*该MCP服务器展示了将传统文档处理与现代AI功能相结合的潜力。通过处理幕后的技术复杂性,我们实现了与复杂文档的自然语言交互,改变了人们访问和理解重要文书工作的方式。*
