🚀 基于 FastAPI + ADB + EasyOCR

多邻国APP自动答题

一个功能强大的自动化答题解决方案,支持中文和韩文OCR识别、语义相似度匹配、GPU加速等特性

功能特点

强大的自动化答题能力,支持多种识别和匹配模式

OCR识别

支持中文和韩文的OCR文字识别,精准提取屏幕内容

语义相似度

可选的语义相似度检测,更智能的答案匹配

中韩互译

集成腾讯云翻译服务,支持中韩互译功能

GPU加速

支持CUDA加速,大幅提升识别和处理速度

工作原理

基于ADB、OCR和API服务的自动化答题流程

1

屏幕截图

使用ADB命令截取手机屏幕,获取答题界面图像

2

OCR识别

通过EasyOCR识别屏幕文字,提取问题和选项内容

3

智能答题

匹配正确答案并模拟点击,自动完成答题过程

安装指南

快速部署和配置您的自动答题环境

环境要求

  • Python 3.10 或更高版本
  • CUDA支持(可选,用于GPU加速)
  • Android设备(需开启USB调试)

安装步骤

步骤 1:克隆项目

git clone https://github.com/Samge0/dlg_cv_demo.git

步骤 2:创建环境

conda create -n dlg_vc_demo python=3.10.13 -y

步骤 3:安装依赖

pip install -r requirements.txt

配置说明

配置环境变量以启用全部功能

创建 `.env` 文件并配置以下环境变量:

# 是否调试模式

DEBUG_MODE=False

# [可选] 是否启用语义相似度检测

USE_SIMILARITY_DETECTION=False

# [可选] 腾讯云翻译配置

TX_SECRET_ID=你的腾讯云SecretId TX_SECRET_KEY=你的腾讯云SecretKey

使用方法

简单的三步启动自动答题

启动服务

运行服务端程序:

python server.py

连接设备

使用ADB连接手机:

adb connect <phone_ip:port>

开始答题

运行客户端脚本:

python client.py

API接口

服务默认运行在 http://localhost:9720

POST /process_image

主要接口

处理图像识别请求

请求体格式

{
  "image_base64": "base64编码的图像数据",
  "need_jump_info": true,
  "need_commit_info": true,
  "custom_dict": {}
}

参数说明

  • image_base64: 图像数据
  • need_jump_info: 是否需要跳转按钮信息
  • need_commit_info: 是否需要提交按钮信息
  • custom_dict: 自定义词典

Docker部署

使用Docker快速部署服务端和客户端

服务端部署

GPU版本(推荐)

docker run -itd --gpus all -p 9720:9720 --name dlg_cv_demo samge/dlg_cv_demo:latest

CPU版本(速度较慢)

docker run -itd -p 9720:9720 --name dlg_cv_demo samge/dlg_cv_demo:cpu-latest

客户端部署

基础命令

docker run -itd --name dlg_cv_demo_client samge/dlg_cv_demo:client-latest

环境变量配置

  • • API_URL: 服务端地址
  • • PHONE_IP_PORT: 手机IP和端口
  • • CUSTOM_DICT: 自定义词典
  • • COMMIT_FILTER_TEXTS: 按钮文本过滤

常见问题

解答您可能遇到的问题

首次运行时需要下载哪些模型文件?

首次运行时会自动下载EasyOCR的基础OCR模型。如果启用了语义相似度检测,还需要下载额外的语义模型文件。

如何提升识别速度?

建议安装CUDA版本的PyTorch以启用GPU加速。根据您的CUDA版本选择合适的安装命令,访问 PyTorch官网 获取详细说明。

支持哪些屏幕尺寸的手机?

本Demo测试手机的屏幕宽高值为 1264×2780。其他尺寸的手机需要修改 .env 环境变量配置或 server.py 进行适配。

是否支持其他语言课程?

本Demo仅用于测试某个韩语课程,其他语言课程需要自行适配代码逻辑和OCR识别参数。

如何自定义词典匹配?

可以通过API接口的 custom_dict 参数传入自定义词典,或在Docker客户端中通过 CUSTOM_DICT 环境变量配置,格式为 JSON 字符串。

相关截图

查看实际运行效果

运行界面示例

API响应结果

答题流程演示