Atomgit-Ascend/GOT-OCR-2.0-hf
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

StepFun OCR 模型体验服务

1. 项目意义

本项目用于小窗体验场景下的模型体验,提供 StepFun OCR(光学字符识别)模型的在线体验服务。用户可以通过 API 接口上传图片,获取图片中的文字识别结果。

2. 项目部署

2.1 部署环境

  • 默认部署环境:华为昇腾服务器
  • IP地址:1.95.72.222
  • NPU型号:910b

2.2 部署方法

项目采用 Dockerfile + docker-compose 方式进行部署。

2.2.1 环境准备

./
├── app
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile-v20251121
├── model
│   └── StepFun
│       └── GOT-OCR-2.0-hf
│           ├── config.json
│           ├── configuration.json
│           ├── generation_config.json
│           ├── model.safetensors
│           ├── preprocessor_config.json
│           ├── README.md
│           ├── special_tokens_map.json
│           ├── tokenizer_config.json
│           └── tokenizer.json
├── README.md
└── t-unit
  • app:是 stepFun/GOT-OCR-2.0-hf 模型的服务的相关代码,这里不展开显示
  • model:是 stepFun 本地模型
    • atomgit 下载:https://ai.atomgit.com/StepFun/GOT-OCR-2.0-hf
  • t-unit:是测试 stepFun/GOT-OCR-2.0-hf 模型的服务的相关 python 脚本

2.2.2 构建镜像

docker build -t models_inference_stepfun_got-ocr-2.0-hf:latest .

2.2.3 启动服务

cd stepFun
docker-compose up -d

2.2.4 查看日志

docker-compose logs -f

2.2.5 停止服务

docker-compose down

2.3 部署说明

  • 服务默认端口映射:18002:8016(宿主机端口:容器内端口)
  • 容器需要访问昇腾 NPU 设备,已配置相关设备挂载:
    • /dev/davinci2
    • /dev/davinci_manager
    • /dev/devmm_svm
    • /dev/hisi_hdc
  • 需要挂载昇腾驱动相关目录和文件
  • 使用 conda 环境 hf-npu,Python 版本 3.10
  • 模型路径:/data/model/StepFun/GOT-OCR-2.0-hf(通过环境变量 STEPFUN_MODEL_PATH 配置)

3. 部署验证

3.1 健康检查验证

执行以下命令进行健康检查:

curl http://localhost:18002/

预期返回:

{
  "message": "health"
}

3.2 功能验证

使用测试脚本进行功能验证:

cd t-unit
python t_stepFun.py

测试脚本会调用 /v1/orc/stepFun 接口,上传测试图片并获取 OCR 识别结果。

4. 项目结构

./
├── app                          # 应用
├── docker-compose.yaml
├── Dockerfile
├── Dockerfile-v20251121
├── model
│   └── StepFun
│       └── GOT-OCR-2.0-hf       # 模型
│           ├── config.json
│           ├── configuration.json
│           ├── generation_config.json
│           ├── model.safetensors
│           ├── preprocessor_config.json
│           ├── README.md
│           ├── special_tokens_map.json
│           ├── tokenizer_config.json
│           └── tokenizer.json
├── README.md
└── t-unit
    ├── guoqing.png
    ├── image_ocr.jpg
    ├── localmodel.py
    ├── t_stepFunApiBase64.py # 测试 base64 格式
    ├── t_stepFunApi.py   # 测试 http url
    └── t_stepFun.py

5. 对外接口说明

5.1 健康检查接口

接口地址:GET /

功能说明:检查服务是否正常运行

请求示例:

curl http://localhost:18002/

响应示例:

{
  "message": "health"
}

5.2 OCR 图片识别接口

接口地址:POST /v1/orc/stepFun

功能说明:上传图片文件,获取 OCR 文字识别结果

请求方式:multipart/form-data

请求参数:

  • file(必填):图片文件,支持格式:.jpg, .png, .jpeg, .bmp, .tiff, .tif, .webp, .gif
  • model StepFun/GOT-OCR-2.0-hf

请求示例:

curl -X POST http://localhost:18002/v1/orc/stepFun \
  -F "file=@image_ocr.jpg" \
  -F "model=StepFun/GOT-OCR-2.0-hf"

响应示例:

{
  "success": true,
  "code": 200,
  "ocr_msg": "识别出的文字内容..."
}

错误响应示例:

{
  "success": false,
  "code": 500,
  "error_msg": "文件上传失败: 错误详情..."
}

支持的图片格式:

  • .jpg, .jpeg
  • .png
  • .bmp
  • .tiff, .tif
  • .webp
  • .gif

6. 技术栈

  • Web框架:FastAPI
  • ASGI服务器:Uvicorn
  • 深度学习框架:PyTorch 2.8.0 + torch_npu 2.8.0(昇腾 NPU 支持)
  • OCR模型:StepFun/GOT-OCR-2.0-hf(通过 transformers 库加载)
  • 图像处理:transformers AutoProcessor
  • 容器化:Docker + Docker Compose

7. 注意事项

  1. NPU设备:服务需要访问华为昇腾 NPU 设备,确保宿主机已正确安装昇腾驱动
  2. 端口配置:默认服务端口为 18002(宿主机端口),容器内端口为 8016
  3. 模型路径:通过环境变量 STEPFUN_MODEL_PATH 配置模型路径,默认为 /data/model/StepFun/GOT-OCR-2.0-hf
  4. 临时文件:上传的图片文件会临时保存在 app/uploads/ 目录,处理完成后自动删除
  5. 日志位置:应用日志保存在 app/logs/ 目录下
  6. 设备映射:容器需要以 privileged 模式运行,并挂载昇腾 NPU 相关设备

8. 常见问题

Q: 服务启动失败,提示无法找到 NPU 设备?

A: 检查宿主机是否已安装昇腾驱动,并确认 docker-compose.yaml 中的设备挂载配置正确。

Q: 接口返回 500 错误?

A: 查看容器日志 docker-compose logs,检查模型文件是否正确加载,确认环境变量 STEPFUN_MODEL_PATH 配置正确。

Q: 上传的图片格式不支持?

A: 确认图片格式为支持的类型(jpg, png, jpeg, bmp, tiff, tif, webp, gif),或通过环境变量 ALLOWED_EXTENSIONS 自定义支持的格式。

Q: OCR 识别结果不准确?

A: 确保上传的图片清晰度足够,文字区域明显。可以尝试调整图片大小或预处理图片后再上传。