# AI阅卷接口客户端

这是专门为AI阅卷系统封装的API客户端，提供了简化的接口调用方式。

## 目录结构

```
src/api/ai/
├── index.ts          # 统一导出
├── http.ts           # AI专用axios实例
├── types.ts          # 类型定义
├── client.ts         # API客户端实现
└── README.md         # 使用说明
```

## 快速开始

### 基础使用

```typescript
import { aiClient } from '@/api/ai';

// 异常检测
const abnormalResult = await aiClient.detectAbnormal(file);

// 模板生成
const templateResult = await aiClient.recognizeTemplate({
  image: ['url1.jpg', 'url2.jpg']
});

// 内容识别
const recognizeResult = await aiClient.batchRecognize({
  template_id: 'xxx',
  md5_digest: 'xxx',
  images: [['url1.jpg', 'url2.jpg']]
});
```

### 使用类型

```typescript
import { aiClient, type AITemplateResults, type AIBatchRecognizeRequest } from '@/api/ai';

const request: AIBatchRecognizeRequest = {
  template_id: 'xxx',
  md5_digest: 'xxx',
  images: [['url1.jpg', 'url2.jpg']]
};

const result = await aiClient.batchRecognize(request);
```

## API分类

### 异常检测和修正

- `detectAbnormal()` - 同时检测空白和折角
- `detectBlank()` - 空白检测
- `detectFolded()` - 折角检测
- `correctImage()` - 倾斜和颠倒矫正

### 版面和子题分割

- `layoutSegment()` - 版面分割
- `segmentObjective()` - 客观题子题分割
- `segmentSubjective()` - 主观题子题分割

### 局部检测和识别

- `recognizeExamOption()` - 填涂考号识别
- `recognizeBarCode()` - 条形码识别
- `recognizeOCR()` - OCR识别
- `recognizeSelectOptions()` - 选择题识别

### 模板管理

- `recognizeTemplate()` - 模板生成
- `modifyTemplate()` - 模板修改
- `updateFrontBackArea()` - 文字定位区更新
- `listTemplates()` - 列出所有模板
- `getTemplate()` - 获取模板信息
- `deleteTemplate()` - 删除模板
- `createTemplate()` - 新增模板

### 内容识别

- `batchRecognize()` - 批量内容识别
- `directRecognize()` - 直接识别

## 配置

### 环境变量

在 `.env` 文件中配置AI API地址：

```env
VITE_AI_API_URL=/ai
```

### 超时时间

AI接口使用60秒超时时间，适合处理较大的图片文件。

## 错误处理

AI接口使用简化的错误处理，直接抛出原始错误：

```typescript
try {
  const result = await aiClient.detectAbnormal(file);
  // 处理成功结果
} catch (error) {
  console.error('AI API调用失败:', error);
  // 处理错误
}
```

## 注意事项

1. **文件格式**: 大部分接口需要传入File对象（图片文件）
2. **参数名称**: 注意API文档中的参数名称要求（如files vs file）
3. **响应格式**: 不同接口的响应格式可能不同，请参考类型定义
4. **网络超时**: AI处理可能需要较长时间，已设置60秒超时
