# AI-Core 文档解析服务 基于 Python 的 gRPC 文档解析服务,支持多种文件格式转换为 Markdown。 ## 功能特性 - 支持多种文件格式:PDF、DOCX、DOC、XLSX、XLS、CSV、Markdown、图片等 - 多解析引擎支持(builtin、markitdown) - gRPC 接口,高性能通信 - 支持通过 URL 下载文件并解析 - 可配置的解析引擎和参数 ## 项目结构 ``` ai-core/ ├── main.py # 服务启动入口 ├── requirements.txt # Python 依赖 ├── proto/ # gRPC 协议定义 │ └── document_parser.proto # Protocol Buffers 定义 ├── parser/ # 文档解析器模块 │ ├── base_parser.py # 基础解析器接口 │ ├── parser.py # 解析器门面 │ ├── registry.py # 解析器注册表 │ ├── docx_parser.py # DOCX 解析器 │ ├── pdf_parser.py # PDF 解析器 │ └── ... └── service/ # gRPC 服务实现 └── grpc_server.py # gRPC 服务器 ``` ## 安装 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 生成 gRPC 代码 ```bash python -m grpc_tools.protoc \ --proto_path=proto \ --python_out=proto \ --grpc_python_out=proto \ proto/document_parser.proto ``` ## 使用 ### 启动服务 ```bash python main.py --port 50051 --max-workers 10 ``` 参数说明: - `--port`: gRPC 服务端口(默认 50051) - `--max-workers`: 最大工作线程数(默认 10) - `--log-level`: 日志级别(DEBUG/INFO/WARNING/ERROR,默认 INFO) ### gRPC 接口 #### ParseDocument 解析文档为 Markdown ```protobuf message ParseRequest { string file_url = 1; // 文件 URL(必填) string file_name = 2; // 文件名(必填) string file_type = 3; // 文件类型(必填,如 pdf、docx) string parser_engine = 4; // 解析引擎(可选,默认 builtin) map engine_overrides = 5;// 引擎参数覆盖(可选) } message ParseResponse { bool success = 1; // 是否成功 string content = 2; // Markdown 内容 string message = 3; // 消息 int32 content_length = 4; // 内容长度 string file_type = 5; // 文件类型 string parser_engine = 6; // 使用的解析引擎 } ``` #### GetSupportedFormats 获取支持的文件格式列表 #### GetEngines 获取可用的解析引擎列表 ## Go 客户端调用示例 ```go conn, err := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Fatalf("Failed to connect: %v", err) } defer conn.Close() client := docparser.NewDocumentParserClient(conn) resp, err := client.ParseDocument(context.Background(), &docparser.ParseRequest{ FileUrl: "http://localhost:8082/files/abc123.pdf", FileName: "example.pdf", FileType: "pdf", ParserEngine: "builtin", }) if err != nil { log.Fatalf("Failed to parse: %v", err) } fmt.Println("Markdown content:") fmt.Println(resp.Content) ``` ## 支持的文件格式 | 格式 | 扩展名 | 说明 | |------|--------|------| | PDF | pdf | PDF 文档 | | Word | docx, doc | Microsoft Word 文档 | | Excel | xlsx, xls | Microsoft Excel 表格 | | CSV | csv | 逗号分隔值文件 | | Markdown | md, markdown | Markdown 文件 | | 图片 | jpg, jpeg, png, gif, bmp, tiff, webp | 常见图片格式 | | PowerPoint | pptx, ppt | PowerPoint 演示文稿 | ## 开发 ### 添加新的解析器 1. 继承 `BaseParser` 类 2. 实现 `parse_into_text` 方法 3. 在 `registry.py` 中注册 ### 添加新的解析引擎 1. 在 `registry.py` 中使用 `register()` 方法注册 2. 提供 `check_available` 函数检查依赖 3. 添加对应的解析器类 ## 许可证 MIT License