mimo2codex 0.1.18 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -104,8 +104,11 @@ function partsToChatContent(parts, ctx) {
104
104
  text: `[${droppedCount} image attachment${plural} omitted because the active model can't ingest images.\n` +
105
105
  `The proxy materialized them to disk so you can OCR / describe without asking the user for a path:\n` +
106
106
  refList +
107
- `\nTo extract text or describe, run (zero-key — free pollinations fallback when MIMO_API_KEY is unset):\n` +
107
+ `\nTo extract text or describe, run:\n` +
108
108
  ` python3 mimoskill/scripts/ocr.py <path-from-above>\n` +
109
+ `Engine auto-select (zero-key): mimo (if MIMO_API_KEY set) > tesseract (if installed, --mode text) > pollinations.\n` +
110
+ `If pollinations is unreachable (e.g. mainland China), install tesseract once for offline OCR:\n` +
111
+ ` brew install tesseract tesseract-lang / apt install tesseract-ocr tesseract-ocr-chi-sim\n` +
109
112
  `Or switch the chat model to mimo-v2.5 / mimo-v2-omni to see images directly.]`,
110
113
  });
111
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reqToChat.js","sourceRoot":"","sources":["../../src/translate/reqToChat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reqToChat.js","sourceRoot":"","sources":["../../src/translate/reqToChat.ts"],"names":[],"mappings":"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"}
package/doc/mimoskill.md CHANGED
@@ -78,24 +78,31 @@ For the mimo engine, the script handles MiMo's quirks transparently: `max_comple
78
78
 
79
79
  ### `scripts/ocr.py` — OCR / image recognition
80
80
 
81
- OCR fallback for when the chat model can't see images. **Two engines** (`--engine auto` picks):
81
+ OCR fallback for when the chat model can't see images. **Three engines** (`--engine auto` picks):
82
82
 
83
- | Engine | Needs key | Quality | Notes |
84
- |---|---|---|---|
85
- | `mimo` | `MIMO_API_KEY` | best | Calls `mimo-v2.5` (the vision model) regardless of the chat model in use |
86
- | `pollinations` | **NO** | decent | Free public endpoint at `text.pollinations.ai`. Rate-limited but no signup |
83
+ | Engine | Needs key | Needs network | Modes | Notes |
84
+ |---|---|---|---|---|
85
+ | `mimo` | `MIMO_API_KEY` | yes | all | Calls `mimo-v2.5` (the vision model) regardless of the chat model in use. Best quality. |
86
+ | `tesseract` | **NO** | **NO** | text only | Fully local OCR. Recommended when pollinations is unreachable (e.g. mainland China). One-time install. |
87
+ | `pollinations` | **NO** | yes | all | Free public endpoint at `text.pollinations.ai`. No signup, but may be slow / blocked in some regions. |
87
88
 
88
- Auto resolution: `mimo` if `MIMO_API_KEY` is set, else `pollinations`. So users with **only a DeepSeek key** (or no key at all) still get OCR with zero setup.
89
+ Auto resolution order: `mimo` (if `MIMO_API_KEY`) `tesseract` (if installed **and** `--mode text`) → `pollinations`. So users with **only a DeepSeek key** (or no key at all) still get OCR with zero setup; users behind GFW who install tesseract once never need to touch the network.
89
90
 
90
91
  ```bash
91
- # Zero-setup — uses pollinations fallback when MIMO_API_KEY is unset
92
+ # Zero-setup — auto picks the best available engine
92
93
  python3 mimoskill/scripts/ocr.py path/to/image.png
93
94
 
95
+ # Offline / behind GFW — install tesseract once, then it works without network
96
+ # macOS: brew install tesseract tesseract-lang
97
+ # Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim
98
+ # Windows: https://github.com/UB-Mannheim/tesseract/wiki
99
+ python3 mimoskill/scripts/ocr.py --engine tesseract --lang Chinese scan.png
100
+
94
101
  # Best quality — set MiMo key
95
102
  export MIMO_API_KEY=sk-xxxx
96
103
  python3 mimoskill/scripts/ocr.py path/to/image.png # auto -> mimo
97
104
 
98
- # Force the free engine even when you have a MiMo key (save quota)
105
+ # Force pollinations even when you have a MiMo key (save quota)
99
106
  python3 mimoskill/scripts/ocr.py --engine pollinations form.png
100
107
 
101
108
  # Force MiMo — errors out if MIMO_API_KEY is not set (no silent fallback)
@@ -78,24 +78,31 @@ mimo 引擎自动踩好 MiMo 的坑:`max_completion_tokens`(不是 `max_toke
78
78
 
79
79
  ### `scripts/ocr.py` —— OCR / 识图
80
80
 
81
- 非视觉 chat 模型场景下的兜底。**两个引擎**(`--engine auto` 自动选):
81
+ 非视觉 chat 模型场景下的兜底。**三个引擎**(`--engine auto` 自动选):
82
82
 
83
- | 引擎 | 需要 key | 质量 | 备注 |
84
- |---|---|---|---|
85
- | `mimo` | 需要 `MIMO_API_KEY` | 最好 | 内部调 `mimo-v2.5`(视觉模型),与外层 chat 模型无关 |
86
- | `pollinations` | **不需要** | 还行 | 免费公共端点 `text.pollinations.ai`。有 IP 限流,但无需注册 |
83
+ | 引擎 | 需要 key | 需要网络 | 支持 mode | 备注 |
84
+ |---|---|---|---|---|
85
+ | `mimo` | 需要 `MIMO_API_KEY` | 需要 | 全部 | 内部调 `mimo-v2.5`(视觉模型),与外层 chat 模型无关。质量最好 |
86
+ | `tesseract` | **不需要** | **不需要** | text | 纯本地 OCR。**国内 / GFW 环境推荐**——pollinations 不通时就靠它兜底。装一次永久可用 |
87
+ | `pollinations` | **不需要** | 需要 | 全部 | 免费公共端点 `text.pollinations.ai`,无需注册。但国内访问可能慢 / 不通 |
87
88
 
88
- auto 选择:有 `MIMO_API_KEY` mimo,否则 pollinations。所以**只配了 DeepSeek key**(或者啥都没配)的用户也能零配置用 OCR
89
+ auto 选择顺序:`mimo`(有 key)→ `tesseract`(已装 + `--mode text`)→ `pollinations`。所以**只配了 DeepSeek key**(或啥都没配)的用户也能零配置用 OCR;国内用户装一次 tesseract 之后 OCR 就完全离线了。
89
90
 
90
91
  ```bash
91
- # 零配置 —— 没设 MIMO_API_KEY 时自动走免费 pollinations
92
+ # 零配置 —— auto 自动挑可用的引擎
92
93
  python3 mimoskill/scripts/ocr.py path/to/image.png
93
94
 
95
+ # 国内 / 离线 —— 装一次 tesseract,永久离线可用
96
+ # macOS: brew install tesseract tesseract-lang
97
+ # Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim
98
+ # Windows: https://github.com/UB-Mannheim/tesseract/wiki
99
+ python3 mimoskill/scripts/ocr.py --engine tesseract --lang Chinese scan.png
100
+
94
101
  # 最佳质量 —— 设 MiMo key
95
102
  export MIMO_API_KEY=sk-xxxx
96
103
  python3 mimoskill/scripts/ocr.py path/to/image.png # auto -> mimo
97
104
 
98
- # 强制走免费引擎(即便你有 MiMo key,比如想省额度)
105
+ # 强制走 pollinations(即便你有 MiMo key,比如想省额度)
99
106
  python3 mimoskill/scripts/ocr.py --engine pollinations form.png
100
107
 
101
108
  # 强制 MiMo —— 没设 key 直接报错(不静默降级)
@@ -82,10 +82,11 @@ For non-trivial integrations, [references/models.md](references/models.md) and [
82
82
 
83
83
  ## OCR / image recognition (when the chat model can't see images)
84
84
 
85
- If the user wants to **read text from an image** or **describe / 识别 an image** but the current chat model is non-vision (`mimo-v2.5-pro`, `mimo-v2.5-pro[1m]`, `mimo-v2-flash`, `deepseek-*`, or any third-party text-only model), invoke `scripts/ocr.py`. Two engines, `--engine auto` (default) picks the right one:
85
+ If the user wants to **read text from an image** or **describe / 识别 an image** but the current chat model is non-vision (`mimo-v2.5-pro`, `mimo-v2.5-pro[1m]`, `mimo-v2-flash`, `deepseek-*`, or any third-party text-only model), invoke `scripts/ocr.py`. Three engines, `--engine auto` (default) picks in this order — mimo if `MIMO_API_KEY` set, else tesseract if installed and mode=text, else pollinations:
86
86
 
87
- - **`mimo`** — needs `MIMO_API_KEY`, uses `mimo-v2.5` regardless of the chat model. Best quality.
88
- - **`pollinations`** — free public vision endpoint at `text.pollinations.ai`, **no key required**. Mirrors the same no-key fallback `generate_pet.py` uses. Rate-limited but always available covers users who only have a DeepSeek key (or no key at all).
87
+ - **`mimo`** — needs `MIMO_API_KEY`, uses `mimo-v2.5` regardless of the chat model. Best quality. All modes.
88
+ - **`tesseract`** — **no key, no network**. Fully local OCR. Auto-used if installed and `--mode text`. Recommended for users behind GFW or offline. One-time install: `brew install tesseract tesseract-lang` / `sudo apt install tesseract-ocr tesseract-ocr-chi-sim` / Windows installer at github.com/UB-Mannheim/tesseract/wiki.
89
+ - **`pollinations`** — free public vision endpoint at `text.pollinations.ai`, **no key required**. All modes. But may be unreachable from mainland China — if you see "connection failed (pollinations)", suggest tesseract as the offline alternative.
89
90
 
90
91
  The proxy silently drops image attachments on non-vision models (`src/translate/reqToChat.ts:48-72`) and leaves a `[N image attachment(s) omitted: …]` placeholder. **When you see that placeholder in the transcript, the right move is to run ocr.py and feed the text back into the conversation.** Don't ask the user to switch models.
91
92
 
@@ -1,16 +1,22 @@
1
1
  # OCR / image recognition workflow
2
2
 
3
3
  `mimoskill/scripts/ocr.py` is the fallback path for reading or describing
4
- images when the surrounding chat model can't see them. Two engines:
4
+ images when the surrounding chat model can't see them. Three engines:
5
5
 
6
- | Engine | Needs API key? | Quality | Notes |
7
- |---|---|---|---|
8
- | `mimo` | yes (`MIMO_API_KEY`) | best | Calls `mimo-v2.5` regardless of the chat model used elsewhere. |
9
- | `pollinations` | **no** | decent | Free public endpoint at `text.pollinations.ai`. Rate-limited but no signup. |
6
+ | Engine | Needs API key | Needs network | Quality | Notes |
7
+ |---|---|---|---|---|
8
+ | `mimo` | yes (`MIMO_API_KEY`) | yes | best | Calls `mimo-v2.5` regardless of the chat model used elsewhere. All modes supported. |
9
+ | `tesseract` | **no** | **no** | decent for clean print | Fully local. `--mode text` only. Recommended when network access to pollinations is unreliable (e.g. mainland China). Requires one-time install. |
10
+ | `pollinations` | **no** | yes | decent | Free public endpoint at `text.pollinations.ai`. All modes supported, but may be slow / unreachable behind some firewalls. |
10
11
 
11
- `--engine auto` (default) picks `mimo` if `MIMO_API_KEY` is set, else falls
12
- back to `pollinations` so users with only a DeepSeek key (or no key at all)
13
- still get OCR.
12
+ `--engine auto` (default) picks in this order:
13
+ 1. `mimo` if `MIMO_API_KEY` is set
14
+ 2. `tesseract` if installed on PATH **and** `--mode text`
15
+ 3. `pollinations` otherwise
16
+
17
+ So users with only a DeepSeek key, or no key at all, still get OCR — and
18
+ users behind GFW who have tesseract installed never need to touch the
19
+ network.
14
20
 
15
21
  ## TL;DR
16
22
 
@@ -167,28 +173,67 @@ silently (one stderr line) rather than failing.
167
173
 
168
174
  ## When `MIMO_API_KEY` isn't set
169
175
 
170
- `--engine auto` (the default) silently falls back to `pollinations`:
176
+ `--engine auto` (the default) chooses tesseract if it's installed and the
177
+ mode is `text`, otherwise pollinations:
171
178
 
172
179
  ```
173
- [engine] auto -> pollinations (free, no key). Set MIMO_API_KEY for higher quality (mimo-v2.5).
180
+ # With tesseract installed
181
+ [engine] auto -> tesseract (local, no network). Set MIMO_API_KEY for higher quality (mimo-v2.5).
182
+ [ocr] engine=tesseract mode=text lang=eng+chi_sim images=1
183
+ <extracted text>
184
+
185
+ # Without tesseract
186
+ [engine] auto -> pollinations (free, no key).
187
+ Set MIMO_API_KEY for higher quality (mimo-v2.5), or install tesseract for offline OCR.
174
188
  [ocr] engine=pollinations mode=text model=openai images=1
175
189
  <extracted text>
176
190
  ```
177
191
 
178
192
  Exit code `3` is only raised when the user explicitly passes `--engine mimo`
179
- without a key (passing the flag is treated as an assertion that MiMo should
180
- be used; auto-falling-back would mask the misconfiguration).
193
+ without a key, or `--engine tesseract` without it installed (passing a flag
194
+ is treated as an assertion that engine should be used; auto-falling-back
195
+ would mask the misconfiguration).
196
+
197
+ ## Tesseract specifics (offline / GFW-friendly path)
181
198
 
182
- If you'd rather use **fully-local OCR** with no network at all, install
183
- tesseract and shell to it directly — this skill won't auto-invoke it:
199
+ Install once, never touch the network again:
184
200
 
185
201
  ```bash
186
202
  macOS: brew install tesseract tesseract-lang
187
203
  Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim
188
204
  Windows: https://github.com/UB-Mannheim/tesseract/wiki
189
- tesseract <image> - -l eng+chi_sim
190
205
  ```
191
206
 
207
+ The script auto-detects tesseract on `PATH` via `shutil.which("tesseract")`.
208
+ Once installed, `python3 ocr.py <image>` (with `MIMO_API_KEY` unset) routes
209
+ through tesseract automatically.
210
+
211
+ **Language hints** — `--lang` is mapped to tesseract's `-l` codes:
212
+
213
+ | `--lang` | tesseract `-l` |
214
+ |---|---|
215
+ | `Chinese` (default for Chinese) | `chi_sim+chi_tra` |
216
+ | `zh` / `zh-hans` / `zh-cn` | `chi_sim` |
217
+ | `zh-hant` / `zh-tw` | `chi_tra` |
218
+ | `en` / `English` | `eng` |
219
+ | `ja` / `Japanese` / `日本語` | `jpn` |
220
+ | `ko` / `Korean` / `한국어` | `kor` |
221
+ | `fr` / `de` / `es` / `ru` | `fra` / `deu` / `spa` / `rus` |
222
+ | anything else | `eng+chi_sim` (sensible default for mixed CJK content) |
223
+ | raw tesseract code (e.g. `fra+ita`) | passed through |
224
+
225
+ If you need a language not pre-mapped, install the corresponding traineddata
226
+ on your system (e.g. `tesseract-ocr-deu` on Ubuntu, `brew install tesseract-lang`
227
+ on macOS) and pass `--lang` as the raw code.
228
+
229
+ **Limitations**: tesseract is an OCR engine, not an LLM — it only extracts
230
+ literal text. `--mode describe` / `structured` / `markdown` need a vision
231
+ LLM (mimo or pollinations) and will error if you force tesseract.
232
+
233
+ **Input forms**: all the usual ones work — local path, `http(s):` URL,
234
+ `data:` URL, stdin. URLs are downloaded to a temp file before tesseract
235
+ runs; data URLs are decoded; the temp file is cleaned up after.
236
+
192
237
  ## Pollinations specifics
193
238
 
194
239
  - Endpoint: `https://text.pollinations.ai/openai` (OpenAI Chat Completions
@@ -220,7 +265,7 @@ tesseract <image> - -l eng+chi_sim
220
265
  | 0 | Success |
221
266
  | 1 | Upstream HTTP error (MiMo or Pollinations; error body printed to stderr) |
222
267
  | 2 | argv / usage error (no image, mutually exclusive flags, etc.) |
223
- | 3 | `--engine mimo` explicitly requested but `MIMO_API_KEY` not set |
268
+ | 3 | `--engine mimo` requested without `MIMO_API_KEY`, or `--engine tesseract` requested but not installed |
224
269
  | 4 | Local image file not found / unreadable |
225
270
 
226
271
  ## Composing with `mimo_chat.py`
@@ -6,15 +6,23 @@ Use this when the surrounding chat model can't see images (mimo-v2.5-pro,
6
6
  mimo-v2.5-pro[1m], mimo-v2-flash, deepseek-*, or any text-only model).
7
7
 
8
8
  Engines (--engine):
9
- auto (default) — mimo if MIMO_API_KEY set, else pollinations
9
+ auto (default) — mimo if MIMO_API_KEY set, else tesseract if
10
+ installed and --mode=text, else pollinations
10
11
  mimo — Xiaomi MiMo V2.5 vision. Highest quality. Needs MIMO_API_KEY
11
- pollinations pollinations.ai free public vision endpoint. NO KEY REQUIRED
12
+ tesseract Local Tesseract OCR. NO KEY, NO NETWORK. Good for users
13
+ behind firewalls (e.g. mainland China where pollinations.ai
14
+ can be unreachable). Supports --mode text only.
15
+ pollinations — pollinations.ai free public vision endpoint. No key but
16
+ needs network reachable from the user (may be slow/unreliable
17
+ in some regions).
12
18
 
13
19
  Modes (--mode):
14
20
  text (default) verbatim OCR — raw text, preserves line breaks
15
- describe 2-4 sentence description of the image
21
+ describe 2-4 sentence description of the image (mimo / pollinations only)
16
22
  structured single JSON object with text / language / regions / summary
23
+ (mimo / pollinations only)
17
24
  markdown re-render the image as GitHub-flavored Markdown
25
+ (mimo / pollinations only)
18
26
 
19
27
  Image inputs (positional, 0+):
20
28
  /path/to/file.png local file → base64 data URL
@@ -24,14 +32,19 @@ Image inputs (positional, 0+):
24
32
  (none, stdin not a TTY) same as `-`
25
33
 
26
34
  Usage:
27
- # Zero-setup: free fallback, works for DeepSeek-only / no-key users
35
+ # Zero-setup
28
36
  python3 ocr.py path/to/image.png
29
37
  python3 ocr.py --mode describe https://example.com/x.png
30
38
 
39
+ # Behind GFW / offline — install tesseract once, never need network again
40
+ # macOS: brew install tesseract tesseract-lang
41
+ # Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim
42
+ # Windows: https://github.com/UB-Mannheim/tesseract/wiki
43
+ python3 ocr.py --engine tesseract --lang Chinese scan.png
44
+
31
45
  # Best quality (needs MiMo key)
32
46
  export MIMO_API_KEY=sk-xxxx
33
47
  python3 ocr.py --mode structured a.png b.jpg
34
- cat scan.png | python3 ocr.py --mode markdown
35
48
 
36
49
  Only depends on the standard library — no `openai` SDK install needed.
37
50
  """
@@ -42,7 +55,10 @@ import base64
42
55
  import json
43
56
  import mimetypes
44
57
  import os
58
+ import shutil
59
+ import subprocess
45
60
  import sys
61
+ import tempfile
46
62
  import urllib.error
47
63
  import urllib.request
48
64
  from pathlib import Path
@@ -198,6 +214,139 @@ def build_messages(
198
214
  return messages
199
215
 
200
216
 
217
+ # --- Tesseract (local, offline) ---------------------------------------------
218
+
219
+ # Lightweight mapping from human/--lang hints to tesseract trained-data codes.
220
+ # Tesseract supports compound languages via "+": "eng+chi_sim+chi_tra".
221
+ _TESSERACT_LANG_MAP: dict[str, str] = {
222
+ "chinese": "chi_sim+chi_tra",
223
+ "zh": "chi_sim",
224
+ "zh-hans": "chi_sim",
225
+ "zh-cn": "chi_sim",
226
+ "zh-hant": "chi_tra",
227
+ "zh-tw": "chi_tra",
228
+ "english": "eng",
229
+ "en": "eng",
230
+ "japanese": "jpn",
231
+ "ja": "jpn",
232
+ "日本語": "jpn",
233
+ "korean": "kor",
234
+ "ko": "kor",
235
+ "한국어": "kor",
236
+ "french": "fra",
237
+ "fr": "fra",
238
+ "german": "deu",
239
+ "de": "deu",
240
+ "spanish": "spa",
241
+ "es": "spa",
242
+ "russian": "rus",
243
+ "ru": "rus",
244
+ }
245
+
246
+
247
+ def tesseract_available() -> bool:
248
+ return shutil.which("tesseract") is not None
249
+
250
+
251
+ def map_lang_to_tesseract(lang: str | None) -> str:
252
+ """Resolve --lang hint to a tesseract -l string. Default: eng+chi_sim."""
253
+ if not lang:
254
+ return "eng+chi_sim"
255
+ key = lang.strip().lower()
256
+ if key in _TESSERACT_LANG_MAP:
257
+ return _TESSERACT_LANG_MAP[key]
258
+ # If the user passed a raw tesseract code (e.g. "fra+ita") we trust it.
259
+ if all(part.isalnum() or part == "_" for part in key.replace("+", "_")):
260
+ return lang
261
+ return "eng+chi_sim"
262
+
263
+
264
+ def resolve_to_local_file(image_arg: str) -> tuple[Path, bool]:
265
+ """Resolve a positional IMAGE arg to a path tesseract can read.
266
+ Returns (path, is_temp). Caller should delete the file if is_temp."""
267
+ if image_arg == "-":
268
+ if sys.stdin.isatty():
269
+ sys.stderr.write("error: `-` requested but stdin is a TTY\n")
270
+ sys.exit(2)
271
+ data = sys.stdin.buffer.read()
272
+ return _write_temp_image(data, hint_name=None)
273
+ if image_arg.startswith(("http://", "https://")):
274
+ try:
275
+ with urllib.request.urlopen(image_arg, timeout=60) as resp:
276
+ data = resp.read()
277
+ except (urllib.error.URLError, urllib.error.HTTPError) as e:
278
+ sys.stderr.write(f"error: failed to fetch {image_arg}: {e}\n")
279
+ sys.exit(1)
280
+ return _write_temp_image(data, hint_name=image_arg.rsplit("/", 1)[-1])
281
+ if image_arg.startswith("data:"):
282
+ # data:image/png;base64,XXXX
283
+ try:
284
+ header, b64 = image_arg.split(",", 1)
285
+ data = base64.b64decode(b64)
286
+ except (ValueError, base64.binascii.Error) as e:
287
+ sys.stderr.write(f"error: malformed data URL: {e}\n")
288
+ sys.exit(2)
289
+ return _write_temp_image(data, hint_name=None)
290
+ path = Path(image_arg)
291
+ if not path.exists():
292
+ sys.stderr.write(f"error: image not found: {image_arg}\n")
293
+ sys.exit(4)
294
+ return path, False
295
+
296
+
297
+ def _write_temp_image(data: bytes, hint_name: str | None) -> tuple[Path, bool]:
298
+ mime = sniff_mime(data, hint_name)
299
+ ext = mime.split("/")[1].split("+")[0] if "/" in mime else "png"
300
+ fd, name = tempfile.mkstemp(suffix=f".{ext}", prefix="mimoskill-ocr-")
301
+ try:
302
+ with os.fdopen(fd, "wb") as f:
303
+ f.write(data)
304
+ except OSError as e:
305
+ sys.stderr.write(f"error: cannot write temp image: {e}\n")
306
+ sys.exit(1)
307
+ return Path(name), True
308
+
309
+
310
+ def run_tesseract(
311
+ *, image_args: list[str], lang_arg: str, extra_prompt: str | None
312
+ ) -> str:
313
+ """Run tesseract over one or more images, return concatenated text."""
314
+ if extra_prompt:
315
+ sys.stderr.write(
316
+ "note: --prompt is ignored on tesseract engine (no LLM in the loop).\n"
317
+ )
318
+ chunks: list[str] = []
319
+ for arg in image_args:
320
+ path, is_temp = resolve_to_local_file(arg)
321
+ try:
322
+ r = subprocess.run(
323
+ ["tesseract", str(path), "-", "-l", lang_arg],
324
+ capture_output=True,
325
+ text=True,
326
+ encoding="utf-8",
327
+ errors="replace",
328
+ )
329
+ except FileNotFoundError:
330
+ sys.stderr.write(
331
+ "error: tesseract not found on PATH. Install:\n"
332
+ " macOS: brew install tesseract tesseract-lang\n"
333
+ " Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim\n"
334
+ " Windows: https://github.com/UB-Mannheim/tesseract/wiki\n"
335
+ )
336
+ sys.exit(1)
337
+ finally:
338
+ if is_temp:
339
+ try:
340
+ path.unlink()
341
+ except OSError:
342
+ pass
343
+ if r.returncode != 0:
344
+ sys.stderr.write(f"tesseract failed for {arg}: {r.stderr.strip()}\n")
345
+ sys.exit(1)
346
+ chunks.append(r.stdout.rstrip())
347
+ return "\n\n".join(c for c in chunks if c)
348
+
349
+
201
350
  # --- HTTP -------------------------------------------------------------------
202
351
 
203
352
  POLLINATIONS_URL = "https://text.pollinations.ai/openai"
@@ -226,6 +375,20 @@ def post(url: str, body: dict[str, Any], api_key: str | None, stream: bool, *, e
226
375
  sys.exit(1)
227
376
  except urllib.error.URLError as e:
228
377
  sys.stderr.write(f"connection failed ({engine}): {e}\n")
378
+ if engine == "pollinations":
379
+ # pollinations.ai is often slow / unreachable from mainland China.
380
+ # Point at the offline & domestic-friendly alternatives.
381
+ sys.stderr.write(
382
+ " pollinations.ai can be unreachable from mainland China.\n"
383
+ " Alternatives:\n"
384
+ " 1. Install tesseract for offline OCR (text mode only):\n"
385
+ " macOS: brew install tesseract tesseract-lang\n"
386
+ " Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim\n"
387
+ " Windows: https://github.com/UB-Mannheim/tesseract/wiki\n"
388
+ " then re-run: python3 ocr.py --engine tesseract --lang Chinese <image>\n"
389
+ " 2. Use MiMo: export MIMO_API_KEY=sk-xxxx ; python3 ocr.py <image>\n"
390
+ " 3. Use a network proxy (set HTTPS_PROXY env var) and retry.\n"
391
+ )
229
392
  sys.exit(1)
230
393
 
231
394
 
@@ -303,10 +466,12 @@ def main() -> None:
303
466
  p.add_argument("--temperature", type=float, default=0.2)
304
467
  p.add_argument(
305
468
  "--engine",
306
- choices=["auto", "mimo", "pollinations"],
469
+ choices=["auto", "mimo", "tesseract", "pollinations"],
307
470
  default=os.environ.get("MIMO_OCR_ENGINE", "auto"),
308
- help="OCR backend. auto = mimo if MIMO_API_KEY set, else pollinations "
309
- "(free, no key required). default: %(default)s",
471
+ help="OCR backend. auto = mimo (if MIMO_API_KEY) > tesseract (if "
472
+ "installed and --mode=text) > pollinations. tesseract is fully local "
473
+ "(no key, no network) — recommended when pollinations is unreachable "
474
+ "(e.g. behind GFW). default: %(default)s",
310
475
  )
311
476
  p.add_argument(
312
477
  "--base-url",
@@ -337,19 +502,51 @@ def main() -> None:
337
502
  sys.stderr.write(
338
503
  "error: --engine mimo requires MIMO_API_KEY.\n"
339
504
  " set one at https://platform.xiaomimimo.com/#/console/api-keys\n"
340
- " OR drop the flag to fall back to pollinations (free, no key required):\n"
341
- " python3 ocr.py <image>\n"
505
+ " OR drop the flag to use auto fallback (tesseract / pollinations).\n"
506
+ )
507
+ sys.exit(3)
508
+ elif args.engine == "tesseract":
509
+ engine = "tesseract"
510
+ if not tesseract_available():
511
+ sys.stderr.write(
512
+ "error: --engine tesseract requested but tesseract is not on PATH.\n"
513
+ " macOS: brew install tesseract tesseract-lang\n"
514
+ " Ubuntu: sudo apt install tesseract-ocr tesseract-ocr-chi-sim\n"
515
+ " Windows: https://github.com/UB-Mannheim/tesseract/wiki\n"
342
516
  )
343
517
  sys.exit(3)
518
+ if args.mode != "text":
519
+ sys.stderr.write(
520
+ f"error: --engine tesseract only supports --mode text "
521
+ f"(you passed --mode {args.mode}). tesseract is an OCR engine, "
522
+ f"not an LLM — `describe` / `structured` / `markdown` need a "
523
+ f"vision LLM (mimo or pollinations).\n"
524
+ )
525
+ sys.exit(2)
344
526
  elif args.engine == "pollinations":
345
527
  engine = "pollinations"
346
528
  else: # auto
347
- engine = "mimo" if api_key else "pollinations"
348
- if engine == "pollinations":
529
+ if api_key:
530
+ engine = "mimo"
531
+ elif args.mode == "text" and tesseract_available():
532
+ engine = "tesseract"
349
533
  sys.stderr.write(
350
- "[engine] auto -> pollinations (free, no key). "
534
+ "[engine] auto -> tesseract (local, no network). "
351
535
  "Set MIMO_API_KEY for higher quality (mimo-v2.5).\n"
352
536
  )
537
+ else:
538
+ engine = "pollinations"
539
+ hint = ""
540
+ if args.mode != "text" and tesseract_available():
541
+ hint = (
542
+ " (tesseract is installed but only handles --mode text;"
543
+ " using pollinations for this mode)"
544
+ )
545
+ sys.stderr.write(
546
+ f"[engine] auto -> pollinations (free, no key){hint}.\n"
547
+ " Set MIMO_API_KEY for higher quality (mimo-v2.5), "
548
+ "or install tesseract for offline OCR.\n"
549
+ )
353
550
 
354
551
  # Resolve images: explicit args, else stdin if not a TTY.
355
552
  raw_args = args.images
@@ -362,6 +559,30 @@ def main() -> None:
362
559
  )
363
560
  sys.exit(2)
364
561
 
562
+ # Tesseract branch — fully local, no LLM call, no data-URL conversion.
563
+ if engine == "tesseract":
564
+ lang_arg = map_lang_to_tesseract(args.lang)
565
+ sys.stderr.write(
566
+ f"[ocr] engine=tesseract mode=text lang={lang_arg} images={len(raw_args)}\n"
567
+ )
568
+ text = run_tesseract(
569
+ image_args=raw_args, lang_arg=lang_arg, extra_prompt=args.prompt
570
+ )
571
+ if args.json:
572
+ envelope = {
573
+ "mode": "text",
574
+ "engine": "tesseract",
575
+ "model": f"tesseract:{lang_arg}",
576
+ "images": len(raw_args),
577
+ "content": text,
578
+ "reasoning_content": "",
579
+ "usage": {},
580
+ }
581
+ print(json.dumps(envelope, ensure_ascii=False, indent=2))
582
+ else:
583
+ print(text)
584
+ return
585
+
365
586
  image_urls = [resolve_image_arg(a) for a in raw_args]
366
587
 
367
588
  if engine == "mimo":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mimo2codex",
3
- "version": "0.1.18",
3
+ "version": "0.2.1",
4
4
  "description": "Local proxy that lets the latest OpenAI Codex CLI / desktop talk to Xiaomi MiMo (V2.5 Pro) via the Responses API by translating to Chat Completions on the fly.",
5
5
  "keywords": [
6
6
  "codex",