Skip to main content
Glama
Byte-Naut

npu-vision-fallback

by Byte-Naut

🔋 npu-vision-fallback

⚠️ Archived experiment — no longer actively developed

An Intel NPU screen-vision + MCP integration experiment. Backend routing and Windows-native OCR integration worked; the NPU-first product hypothesis did not find a stable user need. Code preserved for reference.

PyPI License: MIT Python 3.11+

English | 中文


🗄️ Why This Is Archived

This project tested whether desktop AI agents would benefit from running low-level screen perception — "find the button", "read this region" — locally on an Intel NPU, exposed as an MCP server. That was a hypothesis, not a verified need; it never crystallized into stable demand, so development stopped.

Two things the experiment did prove:

  • Backend routing with graceful fallback — NPU → CPU → system OCR → cross-platform OCR, driven by a power policy, with heavy dependencies kept optional.

  • Windows-native OCR over MCP — WinRT OCR wired into the same tool surface as the OpenVINO NPU UI detector.

What I still use it for: batch OCR of long screenshots. Note that the implementation has no complete tiling guarantee for very long images — it may drop content on extreme captures. Treat the code as a reference, not a maintained dependency.


Related MCP server: openowl

🧱 Original Design

Three constraints that shaped the project:

  1. Cheapest path first. OS-native OCR, then a local detector. A cloud multimodal model was the last resort — for reasoning, not for finding buttons.

  2. Isolate compute. Inference on the NPU so the GPU stays free for the app the agent is watching. The service requests NPU or CPU only — never any GPU.

  3. Local, period. Screenshots stay in memory and are never written to disk; OCR text is never logged; nothing leaves the machine.

Pipeline: mcp_server.pycore/orchestrator.pycore/backend_selector.py → selected backend → screen-space remap. Full detail: docs/ARCHITECTURE.md.


📋 Reference

MCP Tools

Tool

Purpose

Key Arguments

health_check

Server status

list_backends

Available backends

ocr_region

Extract text from region

region=[x1,y1,x2,y2]

detect_ui

Find UI elements

region=[x1,y1,x2,y2]

analyze_screen

Combined OCR + detection

region=[x1,y1,x2,y2]

analyze_image_file

Analyze an image file

path, mode=ocr|ui|all

analyze_image_directory

Batch-analyze images in a directory

input_dir, output_dir, mode, recursive, overwrite, max_workers

analyze_screen fuses detection + OCR into spatially-sorted elements with text annotations. analyze_image_file and analyze_image_directory reuse the same pipeline on image files.

CLI

# Single image
uv run npu-vision-fallback-cli analyze-image path/to/image.png --mode all

# Directory batch
uv run npu-vision-fallback-cli analyze-dir path/to/dir --output-dir out/ --recursive
pip install "npu-vision-fallback[ocr-win,detect]"
python scripts/download_ui_model.py  # one-time model export to OpenVINO IR

Further extras are listed in pyproject.toml.

Supported Backends

Backend

Type

Device

Platform

Status

winocr

System OCR

CPU/NPU

Windows

✅ Primary

openvino_npu

UI Detection

NPU

Win/Linux + Intel NPU

✅ Primary

openvino_cpu

UI Detection

CPU

Win/Linux/macOS

✅ Fallback

rapid_ocr

OCR

CPU

All

✅ Cross-platform

pytesseract

OCR

CPU

All

✅ Last-resort

vision

System OCR

ANE

macOS

🚧 Never implemented

Measured Performance

Intel Core Ultra 9 275HX, 2560×1600, on battery:

Task

Backend

Latency

Energy

Notes

OCR

WinOCR

~1100ms

2.5J

Native Windows API

OCR

RapidOCR

~6300ms

14.5J

Cross-platform ONNX CPU

UI Detection

OpenVINO NPU

~80ms

0.3J

YOLOv8n on Intel AI Boost

UI Detection

OpenVINO CPU

~120ms

No-NPU fallback

Full details: outputs/power_report.md

Examples

Example

Description

basic_ocr.py

OCR a screen region

agent_ui_navigation.py

Find and click UI elements

desktop_remote_vnc.py

Vision fallback in remote desktop

uv run python examples/basic_ocr.py --region 0 0 1280 800

Docs


📄 License

MIT © npu-vision-fallback contributors

🙏 Acknowledgments

Built with MCP (Anthropic), OpenVINO, Ultralytics YOLO, RapidOCR, Tesseract, and python-mss.

Development assisted by Claude Code (Anthropic).

Install Server
A
license - permissive license
A
quality
F
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    C
    maintenance
    GUI automation MCP server that enables AI agents to see and control the Windows desktop using a local Vision LLM (Ollama), supporting screenshot analysis, mouse/keyboard actions, and autonomous task execution.
    Last updated
    4
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    An MCP server that gives any AI assistant eyes and hands on your desktop — screenshots, clicking, typing, OCR, window management, accessibility-tree queries, workflow recording.
    Last updated
    5
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • MCP server for Hailuo (MiniMax) AI video generation

  • MCP server for AI dialogue using various LLM models via AceDataCloud

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Byte-Naut/npu-vision-fallback'

If you have feedback or need assistance with the MCP directory API, please join our Discord server