rrantsa/screenkb-vision-ocr

GitHub: rrantsa/screenkb-vision-ocr

一个离线图像分析工具,结合 OCR、计算机视觉与规则知识库,将各类图片转化为结构化 JSON 输出,专为 AI Agent 消费而优化。

Stars: 0 | Forks: 0

# screenkb **分析任何图像** —— 截图、照片、扫描文档 —— 结合 OCR + 计算机视觉 + 布局检测 + 基于规则的知识库。生成结构化的 JSON 输出。无需 GPU。完全离线。 ## 功能 - **OCR** (Tesseract) —— 带坐标的文本提取 - **布局检测** (OpenCV) —— 面板、工具栏、侧边栏、终端面板 - **计算机视觉分析** (OpenCV) —— 人脸、肤色、边缘、MSER、场景分类 - **标注检测** —— 手绘圆圈、下划线、彩色高亮 - **知识库** (SQLite) —— 可学习的 IF-THEN 规则 + 模式匹配 - **所有图像类型** —— 不仅仅是 UI 截图。人物、文档、风景、物体的照片均可自动检测并分类。 - **紧凑输出**(约 200 个 token)—— 专为 AI agent 消耗而优化 ## Pipeline ``` Image Path → Image Loader (Pillow — PNG/JPG/BMP/WEBP, normalize+resize) → OCR Engine (pytesseract — text regions with coordinates) → Layout Analyzer (OpenCV — panels, toolbars, sidebars, terminal) → CV Analyzer (OpenCV — faces, skin, edges, MSER, scene type) → Feature Extractor (keyword matching → feature list) → KB Matcher (SQLite rules + learned patterns) → Reasoning Engine (IF-THEN scoring + CV fallback → winner selection) → JSON Output ``` ## 场景类型(CV 自动检测) | 类型 | 示例 | |------|---------| | `people_photo` | 合影、自拍、肖像 | | `building_photo` | 建筑、建筑外观 | | `document` | 纸张照片、身份证、扫描件 | | `landscape` | 户外风景、天空、自然 | | `object_photo` | 产品照片、物体特写 | | `ui_screenshot` | 桌面/移动应用屏幕 | ## 环境要求 - Python 3.10+ - [Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki)(二进制文件,必须单独安装) ## 安装说明 ``` pip install -r requirements.txt pip install -e . ``` 在 Windows 上,从 https://github.com/UB-Mannheim/tesseract/wiki 安装 Tesseract 默认安装路径:`C:\Program Files\Tesseract-OCR\tesseract.exe`(自动检测)。 如果安装在其他位置,通过环境变量覆盖: ``` $env:TESSERACT_CMD = "D:\tools\Tesseract-OCR\tesseract.exe" ``` ## 运行 screenkb ### analyze —— 完整 pipeline → JSON ``` screenkb analyze screenshot.png # Default: ~500 tokens screenkb analyze screenshot.png --compact # Agent-friendly: ~200 tokens screenkb analyze screenshot.png --extended # Full data: ~1700 tokens screenkb analyze screenshot.png --verbose # Show pipeline steps screenkb analyze screenshot.png --output result.json screenkb analyze screenshot.png --llm # LLM enhancement screenkb analyze screenshot.png --llm --llm-backend deepseek screenkb analyze screenshot.png --annotations # Detect hand-drawn marks ``` ### ocr —— 原始文本提取 ``` screenkb ocr screenshot.png ``` ### layout —— 检测 UI 区域 ``` screenkb layout screenshot.png ``` 返回包含检测到的面板、工具栏、侧边栏、终端面板等的 JSON。 ### learn —— 存储修正 ``` screenkb learn screenshot.png screen_type=login_form screenkb learn photo.jpg screen_type=people_photo screenkb learn scan.png screen_type=document ``` 将图像的特征指纹存储在 SQLite 知识库中。未来相似的图像将获得对该 `screen_type` 的置信度提升。 ### explain —— 显示匹配的规则 ``` screenkb explain screenshot.png ``` 显示哪些 IF-THEN 规则被触发、它们的得分以及最终的分类结果。 ### rules —— 列出所有知识库规则 ``` screenkb rules ``` ## LLM 增强(可选) 使用 `--llm` 启用。LLM 仅接收提取的特征 + OCR 文本,绝不接收原始图像。 支持的后端: | 后端 | 环境变量 | 模型环境变量 | |---------|---------|---------------| | DeepSeek | `DEEPSEEK_API_KEY` | `SCREENKB_LLM_MODEL`(默认:`deepseek-chat`) | | OpenAI | `OPENAI_API_KEY` | `SCREENKB_LLM_MODEL`(默认:`gpt-4o-mini`) | | Ollama | `OLLAMA_BASE_URL`(默认:`http://localhost:11434`) | `SCREENKB_LLM_MODEL`(默认:`llama3`) | 后端选择:`--llm-backend deepseek|openai|ollama` 或 `SCREENKB_LLM` 环境变量,或从 API key 自动检测。 ## 知识库 位置:`%APPDATA%\screenkb\screenkb.db`(Windows)/ `~/.config/screenkb/screenkb.db`(Linux) 覆盖:`SCREENKB_DB=/path/to/screenkb.db` 手动初始化 schema: ``` python migrate_db.py ``` ## 编译为 .exe(可选) ``` pip install pyinstaller pyinstaller --onefile --name screenkb screenkb/cli.py # 输出: dist/screenkb.exe # 复制到: tools/bin/screenkb.exe ```
标签:OCR, OpenCV, Tesseract, 图像分析, 布局检测, 计算机视觉, 逆向工具