
本文介绍如何在 android 设备上通过 adb 命令(无需 root)实现自动化截图,并结合 tesseract 进行 ocr 识别,适用于 ktxpy/qpython 等移动端 python 环境或 pc 端远程控制场景。
本文介绍如何在 android 设备上通过 adb 命令(无需 root)实现自动化截图,并结合 tesseract 进行 ocr 识别,适用于 ktxpy/qpython 等移动端 python 环境或 pc 端远程控制场景。
在 Android 平台上,受限于系统沙盒机制和权限模型,传统桌面端截图库(如 Pillow 的 ImageGrab、mss 或 pyautogui)无法直接调用底层图形缓冲区,因此在 KTXPY 或 QPython 等轻量级安卓 Python 环境中,纯 Python 截图方案基本不可行。实际可行的路径是借助 Android 调试桥(ADB),利用其内置命令完成高效、稳定的截图与交互操作。
✅ 推荐方案:ADB 命令驱动截图(免 Root)
1. 基础截图命令(推荐)
adb exec-out screencap -p > screenshot.png
- screencap 是 Android 系统原生命令,支持 Android 4.0+;
- -p 表示输出为 PNG 格式;
- exec-out 可直接将二进制图像流重定向至本地文件,避免 shell 编码/换行符问题(比 adb shell screencap -p /sdcard/s.png && adb pull 更可靠)。
2. 模拟点击(可选,用于触发目标界面)
adb shell input tap 500 1200 # x=500, y=1200(单位:像素)
⚠️ 注意:需提前开启 USB 调试 和 USB 调试(安全设置)(部分厂商如 Xiaomi 需在「开发者选项 → 特殊权限 → USB 调试(安全设置)」中单独启用);无需 Root,但不同 Android 厂商 UI(MIUI、EMUI、One UI)路径略有差异。
3. 在 Python 中集成(PC 端执行示例)
import subprocess
import cv2
import pytesseract
from PIL import Image
def take_screenshot(filename="screen.png"):
try:
with open(filename, "wb") as f:
result = subprocess.run(
["adb", "exec-out", "screencap", "-p"],
stdout=f,
check=True,
timeout=10
)
print(f"✅ 截图已保存:{filename}")
return True
except Exception as e:
print(f"❌ 截图失败:{e}")
return False
# 使用示例
if take_screenshot():
img = Image.open("screen.png")
text = pytesseract.image_to_string(img, lang='eng')
print("? OCR 识别结果:", text)
? 环境适配建议
-
KTXPY/QPython 用户注意:这些环境不内置 ADB 客户端,且无法直接执行 adb 命令(缺少 shell 权限与二进制依赖)。因此更推荐:
- ✅ PC + WiFi ADB 方案:开启手机「无线调试」→ adb connect
:5555 → 在 PC 上运行上述脚本; - ⚠️ 若坚持在 Android 本地运行,可尝试 Termux(安装 adb + tesseract 包),但配置复杂度高,稳定性低于 PC 方案。
- ✅ PC + WiFi ADB 方案:开启手机「无线调试」→ adb connect
-
OCR 优化提示:
- 截图前建议关闭手机「深色模式」和「字体缩放」,提升 Tesseract 识别准确率;
- 对关键区域可先用 OpenCV 裁剪(如 img[100:400, 200:800]),再送入 OCR;
- 中文识别请安装 tesseract-lang-chi_sim 数据包并指定 lang='chi_sim'。
✅ 总结
| 方案 | 是否需 Root | 是否兼容 KTXPY/QPython | 实时性 | 推荐指数 |
|---|---|---|---|---|
| adb exec-out screencap(PC 执行) | ❌ 否 | ⚠️ 间接支持(需 PC 控制) | ⏱️ 高( | ⭐⭐⭐⭐⭐ |
| adb shell input tap + 截图 | ❌ 否 | ⚠️ 同上 | ⏱️ 高 | ⭐⭐⭐⭐ |
| 纯 Python 库(如 mss) | ❌ 否 | ❌ 不支持(Android 无 X11/Wayland) | — | ⭐ |
最终建议:放弃在 KTXPY/QPython 内部实现截图,转向「PC 端 Python + WiFi ADB」架构——既规避系统限制,又保留 Python 生态(Tesseract、OpenCV、PyAutoGUI 等)全部能力,是当前最简洁、稳定、可扩展的技术路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











