从零跑通:阿里云 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

相关推荐
SaaS_Product16 小时前
企业云盘收费标准主要取决于什么?企业云盘价格到底怎么算?
大数据·云计算·saas·onedrive
2401_861678621 天前
阿里云远程连接
阿里云·云计算
迪康coolmu1 天前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
皮皮虾❀1 天前
阿里云上云迁移服务商选型+官方资质核验+ACE认证团队一体化实战:从“买到假代理”到“官网可查认证服务商承接迁移项目
阿里云·云计算
怪奇云呼军1 天前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
jikemaoshiyanshi2 天前
企业搭建大模型网关与智能路由体系,如何实现精细化推理分发?——AWS 双层网关架构适配规模化业务落地
架构·云计算·aws
径硕科技JINGdigital2 天前
AI 训练时 GPU 利用率低,哪些云上高性能存储方案更适合优化训练成本?AWS 按 I/O 瓶颈分层选型
人工智能·云计算·aws
仓储管理员20252 天前
不同业务场景下,如何匹配适配的WMS系统?
大数据·运维·云计算·精选
IT爱学堂2 天前
2025云计算全栈工程师全日制课程V16百度网盘下载
云计算
baidu_259339572 天前
智慧消防管理系统平台(基于物联网与大数据的城市消防安全解决方案)
大数据·人工智能·物联网·云计算·智慧消防·力安科技·gdliontech.cn