add openai api
This commit is contained in:
@@ -11,6 +11,8 @@
|
||||
- `GET /output/...`:访问生成的 Markdown、JSON 和原始文件
|
||||
- `GET /health`:健康检查
|
||||
- `GET /docs`:Swagger API 文档
|
||||
- `GET /v1/models`:OpenAI 兼容模型列表
|
||||
- `POST /v1/chat/completions`:OpenAI 兼容文档转 Markdown 接口
|
||||
|
||||
---
|
||||
|
||||
@@ -104,6 +106,78 @@ curl -F "file=@/path/to/page.png" -F "force=true" http://127.0.0.1:8000/api/reco
|
||||
|
||||
Markdown 访问地址:`http://服务器IP:8000/output/<文档名>/<文档名>.md`
|
||||
|
||||
### OpenAI 兼容接口
|
||||
|
||||
适用于已有 OpenAI SDK / LangChain / 各类 Agent 框架的调用方式。
|
||||
若配置了 `OPENOCR_ROOT_PATH=/openocr`,则路径前缀为 `/openocr/v1/...`。
|
||||
|
||||
**列出模型**
|
||||
|
||||
```bash
|
||||
curl https://jsuse.com/openocr/v1/models
|
||||
```
|
||||
|
||||
**文档转 Markdown(chat/completions)**
|
||||
|
||||
```bash
|
||||
curl https://jsuse.com/openocr/v1/chat/completions \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"model": "opendoc-0.1b",
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{"type": "text", "text": "Convert this document to markdown"},
|
||||
{
|
||||
"type": "image_url",
|
||||
"image_url": {"url": "https://example.com/page.png"}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
|
||||
也支持 `data:image/png;base64,...` 形式的图片 URL。
|
||||
|
||||
响应中的 `choices[0].message.content` 即为 Markdown 文本。
|
||||
|
||||
若设置了 `OPENOCR_API_KEY`,需附加请求头:
|
||||
|
||||
```bash
|
||||
-H "Authorization: Bearer your-api-key"
|
||||
```
|
||||
|
||||
Python 示例(OpenAI SDK):
|
||||
|
||||
```python
|
||||
from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
base_url="https://jsuse.com/openocr/v1",
|
||||
api_key="your-api-key-or-empty",
|
||||
)
|
||||
|
||||
response = client.chat.completions.create(
|
||||
model="opendoc-0.1b",
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{"type": "text", "text": "Convert to markdown"},
|
||||
{
|
||||
"type": "image_url",
|
||||
"image_url": {"url": "https://example.com/page.png"},
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
print(response.choices[0].message.content)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 日常开发与更新
|
||||
@@ -203,6 +277,8 @@ docker compose up -d --build # 重新构建并启动
|
||||
| `OPENOCR_LAYOUT_THRESHOLD` | `0.4` | 版面分析阈值 |
|
||||
| `OPENOCR_MAX_LENGTH` | `2048` | 识别最大长度 |
|
||||
| `OPENOCR_CORS_ORIGINS` | `*` | 跨域来源,多个用逗号分隔 |
|
||||
| `OPENOCR_API_KEY` | *(空)* | OpenAI 兼容接口 Bearer Token,留空则不校验 |
|
||||
| `OPENOCR_OPENAI_MODEL` | `opendoc-0.1b` | OpenAI 兼容接口使用的模型 ID |
|
||||
| `OPENOCR_LOG_LEVEL` | `info` | 日志级别 |
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user