Files
X-Agents/ai-core/README.md

151 lines
3.9 KiB
Markdown
Raw Normal View History

# 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<string, string> 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