从零跑通:阿里云 ECS + 百炼 MaaS 大模型答题卡识别全流程

一、编写 server.py Flask 服务代码(云服端布置)

复制代码
from flask import Flask, request, jsonify
import base64
from openai import OpenAI

app = Flask(__name__)

# 替换为你的正确API Key
API_KEY = "sk-ws-H.EMXEPHH.Nzuj.MEYCIQCMTWx_h4kUIKbXNUTNKrCbpQOjx-"
BASE_URL = "https://llm-ab2cpkcjl1182sqz.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
MODEL_ID = "qwen3.7-plus"

client = OpenAI(api_key=API_KEY, base_url=BASE_URL)

def img_to_base64(raw_bytes):
    return base64.b64encode(raw_bytes).decode("utf-8")

@app.route("/scan_card", methods=["POST"])
def scan():
    try:
        img_file = request.files["img"]
        img_b64 = img_to_base64(img_file.read())
        prompt = """
这是30题标准单选题答题卡,选项只有A/B/C/D,仅判断被2B铅笔完整涂黑的唯一选项
严格按题号1~30顺序输出结果,格式仅允许:1:A,2:B,3:C
严禁编造答案、严禁额外文字、换行、注释、解释,只输出逗号分隔结果!
逐题精准定位方框位置,以实际填涂色块为准!
        """
        completion = client.chat.completions.create(
            model=MODEL_ID,
            messages=[
                {
                    "role": "user",
                    "content": [
                        {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img_b64}"}},
                        {"type": "text", "text": prompt}
                    ]
                }
            ],
            temperature=0.0,
            top_p=0.0,
            max_tokens=200
        )
        result_text = completion.choices[0].message.content.strip()
        return jsonify({"code": 0, "result": result_text})
    except Exception as err:
        return jsonify({"code": -1, "msg": str(err)})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8081, debug=False)
  • 保存:Ctrl+O → 回车确认保存
  • 退出 nano 编辑器:Ctrl+X

步骤 2:运行客户端脚本

import requests

import os

SERVER_IP = "9.1694.197.176"

SERVER_URL = f"http://{SERVER_IP}:8081/scan_card"

def scan_image(img_path):

try:

with open(img_path, "rb") as f:

upload_file = {"img": f}

res = requests.post(SERVER_URL, files=upload_file, timeout=60)

data = res.json()

if data"code" == 0:

return f"【{os.path.basename(img_path)}】识别结果:{data'result'}"

else:

return f"【{os.path.basename(img_path)}】识别失败:{data'msg'}"

except Exception as e:

return f"【{img_path}】网络请求错误:{str(e)}"

if name == "main":

img_folder = r"D:\text-07"

output_txt = r"D:\text-07\识别结果.txt"

all_result = \[\]

for name in os.listdir(img_folder):

if name.lower().endswith((".jpg", ".png", ".jpeg")):

full_path = os.path.join(img_folder, name)

print(f"正在识别:{name}")

res_text = scan_image(full_path)

all_result.append(res_text)

print(res_text)

with open(output_txt, "w", encoding="utf-8") as f:

f.write("\n".join(all_result))

print(f"\n全部识别完成,结果保存在:{output_txt}")

三、Ubuntu 服务器环境配置 一步一步详细教程

(适配:Ubuntu 22.04,阿里云 ECS,root 用户,全程复制命令执行)

前置

  • 已通过 final shell的SSH 登录服务器:
  • 步骤 1:更新系统软件包sudo apt update
  • 然后执行升级sudo apt upgrade -y

步骤 2:安装基础工具 & Python3 环境

2.1 安装常用工具 + Python3 + pip

  • python3:主程序
  • python3-pip:Python 包管理器
  • nano:文本编辑器
  • curl/net-tools:调试网络 / 端口

步骤 3:安装项目依赖包(Flask、openai SDK)

pip install flask openai

步骤 4:配置防火墙(放行端口:22 SSH、8081 Flask 接口)

步骤 5:编写 Flask 服务代码 server.py

相关推荐
红海云6 分钟前
DeepSeek Harness 的插件化边界
云计算
honsor2 小时前
工业级网口温湿度变送器 ModbusTCP 机房动环环境监测终端
运维·网络·人工智能·物联网·安全·云计算·智能温湿度监测系统
月落汀兰2 小时前
从需求到上线:华为云搭建高可用 Web 站点,ECS/RDS/ELB/AS 组件协同实践
华为云·云计算
月落汀兰2 小时前
云上故障怎么排查?华为云 IAM 权限、CES 监控、LTS 日志、CTS 审计完整指南
华为云·云计算
聚搜云——JuSouClouD5 小时前
在阿里云代理商渠道买轻量服务器,带宽套餐支持自选吗?
服务器·阿里云·云计算
程序员大阳5 小时前
使用Putty登录阿里云Ubuntu ECS服务器方法
ubuntu·云计算·ssh·ecs·putty
智慧医养结合软件开源6 小时前
【源码交付】智慧养老系统 · Java + Vue3-技术架构
大数据·人工智能·信息可视化·云计算
聚搜云——JuSouClouD6 小时前
2026找阿里云代理商采购GPU服务器,有没有额外折扣?
服务器·阿里云·云计算
运维栈记6 小时前
使用 MinIO Client (mc) 将自建 MinIO 数据备份至阿里云 OSS
运维·阿里云