mlboydaisuke commited on
Commit
8cd4d57
·
verified ·
1 Parent(s): f568ba6

Add layout (1036 square) bundle + recognition pf64 for the 2-stage structured pipeline

Browse files
.gitattributes CHANGED
@@ -37,3 +37,7 @@ decoder/mineru_decode_int8lin_s1.aimodel/main.mlirb filter=lfs diff=lfs merge=lf
37
  decoder/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
  tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
39
  vision/mineru_vision.aimodel/main.mlirb filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
37
  decoder/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
38
  tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
39
  vision/mineru_vision.aimodel/main.mlirb filter=lfs diff=lfs merge=lfs -text
40
+ decoder/mineru_decode_int8lin_pf64.aimodel/main.mlirb filter=lfs diff=lfs merge=lfs -text
41
+ layout/decoder/mineru_decode_int8lin_pf64.aimodel/main.mlirb filter=lfs diff=lfs merge=lfs -text
42
+ layout/decoder/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
43
+ layout/vision/mineru_vision.aimodel/main.mlirb filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -18,8 +18,9 @@ decodes on top. The host runs the model twice per page (layout prompt, then reco
18
 
19
  **⬇️ Converted `.aimodel` bundles:
20
  [mlboydaisuke/MinerU2.5-Pro-CoreAI](https://huggingface.co/mlboydaisuke/MinerU2.5-Pro-CoreAI)** —
21
- `vision/` (Qwen2-VL ViT, fp16) + `decoder/` (Qwen2 decoder, S=1 pipelined, int8lin) + `tokenizer/`.
22
- Apache-2.0.
 
23
 
24
  ## Architecture
25
 
@@ -36,8 +37,13 @@ Apache-2.0.
36
  + `rope_shift_start` + `rope_shift_amount`. Zero embeds + `shift_start = 1<<30` → a plain Qwen2 text
37
  decoder.
38
 
39
- ## Verified (M4 Max, GPU, Core AI pipelined engine)
40
 
 
 
 
 
 
41
  - **End-to-end real generation on the engine (shipped portrait 768 config): the sample page read
42
  verbatim** — letterbox → CLIP-norm → non-square patchify → GPU vision `.aimodel` → `image_embeds`
43
  → AOT-compiled (h16c) int8lin S=1 decoder, autoregressive greedy: title + paragraph + the **full
@@ -52,20 +58,37 @@ Apache-2.0.
52
  - **int8lin vs fp16: 13 / 706 argmax flips, all at visual-token positions (0 in the text region)** —
53
  the OCR text is preserved. Greedy generation byte-identical to fp16.
54
 
55
- ## Run in app — `KitMineruReader` (iPhone + Mac)
56
 
57
- The shipped bundle rides the kit's VL rope-shift runtime (`VLRuntime` + `VLArchitecture.mineru`).
58
- The page is letterboxed (aspect-fit + white pad) into a **fixed 672×896 portrait canvas**, CLIP-
59
- normalized, and non-square-patchified into a **32×24 merged grid (768 visual tokens)** the
60
- `VLImagePreprocessor` non-square path added for Qwen2-VL. Two calls:
61
 
62
  ```swift
 
63
  let reader = try await KitMineruReader(catalog: "mineru2.5-pro")
64
- let markdown = try await reader.read(imageAt: documentURL) // "Text Recognition:" whole-page
 
 
 
 
 
 
65
  ```
66
 
67
- v1 is a single whole-page `"Text Recognition:"` pass (correct for clean single-column pages). The
68
- 2-stage layout→region pipeline is a follow-up.
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  ## Pipeline (host side)
71
 
 
18
 
19
  **⬇️ Converted `.aimodel` bundles:
20
  [mlboydaisuke/MinerU2.5-Pro-CoreAI](https://huggingface.co/mlboydaisuke/MinerU2.5-Pro-CoreAI)** —
21
+ `vision/` + `decoder/` (768-token **recognition** grid, Qwen2-VL ViT fp16 + int8lin decoder, pf64
22
+ chunked prefill) + `layout/` (a 1036² **square** recognition/detection grid for the 2-stage) +
23
+ `tokenizer/`. Apache-2.0.
24
 
25
  ## Architecture
26
 
 
37
  + `rope_shift_start` + `rope_shift_amount`. Zero embeds + `shift_start = 1<<30` → a plain Qwen2 text
38
  decoder.
39
 
40
+ ## Verified (M4 Max + iPhone 17 Pro, GPU, Core AI pipelined engine)
41
 
42
+ - **iPhone 17 Pro, on-device, whole page read correctly** — the h18p AOT bundles run through
43
+ `KitMineruReader` in a real app (ReadDoc): a page photo → structured text (headings, paragraphs,
44
+ tables) with nothing leaving the device. **~4 s/page** (warm) via **chunked prefill**: the `pf64`
45
+ multifunction bundle feeds the 768 image tokens in **static S=64 chunks** (the engine auto-discovers
46
+ the `prefill` function) then decodes S=1 — the S=1 prefill (~10 s) drops to **~2.9 s**, no token cut.
47
  - **End-to-end real generation on the engine (shipped portrait 768 config): the sample page read
48
  verbatim** — letterbox → CLIP-norm → non-square patchify → GPU vision `.aimodel` → `image_embeds`
49
  → AOT-compiled (h16c) int8lin S=1 decoder, autoregressive greedy: title + paragraph + the **full
 
58
  - **int8lin vs fp16: 13 / 706 argmax flips, all at visual-token positions (0 in the text region)** —
59
  the OCR text is preserved. Greedy generation byte-identical to fp16.
60
 
61
+ ## Run in app — `KitMineruReader` (Mac; iPhone single-pass)
62
 
63
+ Both grids ride the kit's VL rope-shift runtime (`VLRuntime`). Pages are CLIP-normalized and
64
+ patchified (the `VLImagePreprocessor` non-square + `.stretch`/`.aspectFitPad` paths added for
65
+ Qwen2-VL). Two entry points:
 
66
 
67
  ```swift
68
+ // Single-pass (768 grid): whole page → plain text (reading order). Runs on iPhone (chunked prefill).
69
  let reader = try await KitMineruReader(catalog: "mineru2.5-pro")
70
+ let text = try await reader.read(imageAt: documentURL)
71
+
72
+ // 2-stage (structured Markdown, tables as <table> HTML). Needs the layout bundle too.
73
+ let reader = try await KitMineruReader(
74
+ visionDir: rec.vision, decoderDir: rec.decoder,
75
+ layoutVisionDir: layout.vision, layoutDecoderDir: layout.decoder)
76
+ let markdown = try await reader.readStructured(imageAt: documentURL)
77
  ```
78
 
79
+ **2-stage** (`readStructured`, mirrors `mineru-vl-utils` `two_step_extract` + `json2md`):
80
+ 1. **Layout** on the page **stretched into 1036² square** (`VLArchitecture.mineruLayout`, 37×37 = 1369
81
+ tokens) → `Layout Detection:` emits `<|box_start|>…<|ref_start|>type…` blocks. A 768 portrait grid
82
+ mis-detects here — the square high-res grid is required. Boxes are 0–1 of the square, so they map
83
+ linearly onto the original page.
84
+ 2. **Recognition** per region on the **768 grid** (`.mineru`): each block is cropped from the original
85
+ and read by type — `Table Recognition:` emits **OTSL** (`<fcel>`/`<nl>`), kept (not skipped) and
86
+ converted to `<table>` HTML; `Formula Recognition:` → LaTeX; else plain text.
87
+ 3. **json2md** joins the region contents in reading order.
88
+
89
+ Verified end-to-end in the ReadDoc Mac app: an 8-block page → title/paragraphs + a 5-row `<table>`,
90
+ byte-identical to the reference. ~11 s load (both bundles) + ~11 s/page. The single-pass path also
91
+ runs on iPhone; the 2-stage's 1036² layout grid is Mac-tier (two bundles, heavy).
92
 
93
  ## Pipeline (host side)
94
 
decoder/mineru_decode_int8lin_pf64.aimodel/main.hash ADDED
@@ -0,0 +1 @@
 
 
1
+ �6�]�����J�$<v5o��F`L�U�Ƃ��2�
decoder/mineru_decode_int8lin_pf64.aimodel/main.mlirb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a336f55dff7fb9c1b5c04afe243c76356ffe9646604c905595c682eba2f132e2
3
+ size 653085537
decoder/mineru_decode_int8lin_pf64.aimodel/metadata.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "assetVersion" : "2.0"
3
+ }
layout/decoder/metadata.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata_version": "0.2",
3
+ "kind": "llm",
4
+ "name": "mineru_decode_int8lin_pf64",
5
+ "assets": {
6
+ "main": "mineru_decode_int8lin_pf64.aimodel"
7
+ },
8
+ "language": {
9
+ "tokenizer": "/Users/majimadaisuke/code/coreai/_mineru_dl",
10
+ "vocab_size": 151936,
11
+ "max_context_length": 4096,
12
+ "embedded_tokenizer": true,
13
+ "function_map": {
14
+ "main": [
15
+ "main",
16
+ "prefill"
17
+ ]
18
+ }
19
+ },
20
+ "source": {
21
+ "model_definition": "torch",
22
+ "hf_model_id": "/Users/majimadaisuke/code/coreai/_mineru_dl"
23
+ },
24
+ "compression": null,
25
+ "compilation": {
26
+ "date": "2026-07-06T07:41:10.859485+00:00",
27
+ "targets": []
28
+ }
29
+ }
layout/decoder/mineru_decode_int8lin_pf64.aimodel/main.hash ADDED
Binary file (32 Bytes). View file
 
layout/decoder/mineru_decode_int8lin_pf64.aimodel/main.mlirb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aaf7110b227644975540b296a7fca01d625e3cc7edc394b9e1ec8b1a00c272b2
3
+ size 653085540
layout/decoder/mineru_decode_int8lin_pf64.aimodel/metadata.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "assetVersion" : "2.0"
3
+ }
layout/decoder/tokenizer/added_tokens.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "<ched>": 151661,
3
+ "<ecel>": 151662,
4
+ "<fcel>": 151663,
5
+ "<lcel>": 151664,
6
+ "<nl>": 151667,
7
+ "<ucel>": 151665,
8
+ "<xcel>": 151666,
9
+ "<|box_end|>": 151649,
10
+ "<|box_start|>": 151648,
11
+ "<|endoftext|>": 151643,
12
+ "<|im_end|>": 151645,
13
+ "<|im_start|>": 151644,
14
+ "<|image_pad|>": 151655,
15
+ "<|md_end|>": 151660,
16
+ "<|md_start|>": 151659,
17
+ "<|object_ref_end|>": 151647,
18
+ "<|object_ref_start|>": 151646,
19
+ "<|paratext|>": 151673,
20
+ "<|quad_end|>": 151651,
21
+ "<|quad_start|>": 151650,
22
+ "<|ref_end|>": 151658,
23
+ "<|ref_start|>": 151657,
24
+ "<|rotate_down|>": 151669,
25
+ "<|rotate_left|>": 151670,
26
+ "<|rotate_right|>": 151671,
27
+ "<|rotate_up|>": 151668,
28
+ "<|txt_contd|>": 151672,
29
+ "<|video_pad|>": 151656,
30
+ "<|vision_end|>": 151653,
31
+ "<|vision_pad|>": 151654,
32
+ "<|vision_start|>": 151652
33
+ }
layout/decoder/tokenizer/chat_template.jinja ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system
2
+ You are a helpful assistant.<|im_end|>
3
+ {% endif %}<|im_start|>{{ message['role'] }}
4
+ {% if message['content'] is string %}{{ message['content'] }}<|im_end|>
5
+ {% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}Picture {{ image_count.value }}: {% endif %}<|vision_start|><|image_pad|><|vision_end|>{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}Video {{ video_count.value }}: {% endif %}<|vision_start|><|video_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>
6
+ {% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant
7
+ {% endif %}
layout/decoder/tokenizer/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
layout/decoder/tokenizer/special_tokens_map.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_start|>",
4
+ "<|im_end|>",
5
+ "<|object_ref_start|>",
6
+ "<|object_ref_end|>",
7
+ "<|box_start|>",
8
+ "<|box_end|>",
9
+ "<|quad_start|>",
10
+ "<|quad_end|>",
11
+ "<|vision_start|>",
12
+ "<|vision_end|>",
13
+ "<|vision_pad|>",
14
+ "<|image_pad|>",
15
+ "<|video_pad|>",
16
+ "<|ref_start|>",
17
+ "<|ref_end|>",
18
+ "<|md_start|>",
19
+ "<|md_end|>",
20
+ "<ched>",
21
+ "<ecel>",
22
+ "<fcel>",
23
+ "<lcel>",
24
+ "<ucel>",
25
+ "<xcel>",
26
+ "<nl>",
27
+ "<|rotate_up|>",
28
+ "<|rotate_down|>",
29
+ "<|rotate_left|>",
30
+ "<|rotate_right|>",
31
+ "<|txt_contd|>",
32
+ "<|paratext|>"
33
+ ],
34
+ "eos_token": {
35
+ "content": "<|im_end|>",
36
+ "lstrip": false,
37
+ "normalized": false,
38
+ "rstrip": false,
39
+ "single_word": false
40
+ },
41
+ "pad_token": {
42
+ "content": "<|endoftext|>",
43
+ "lstrip": false,
44
+ "normalized": false,
45
+ "rstrip": false,
46
+ "single_word": false
47
+ }
48
+ }
layout/decoder/tokenizer/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dceac5fc54a795ee7570d17902b47bd05412dc2afa62bdf325c3f97fcb5b87fe
3
+ size 11423550
layout/decoder/tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "added_tokens_decoder": {
4
+ "151643": {
5
+ "content": "<|endoftext|>",
6
+ "lstrip": false,
7
+ "normalized": false,
8
+ "rstrip": false,
9
+ "single_word": false,
10
+ "special": true
11
+ },
12
+ "151644": {
13
+ "content": "<|im_start|>",
14
+ "lstrip": false,
15
+ "normalized": false,
16
+ "rstrip": false,
17
+ "single_word": false,
18
+ "special": true
19
+ },
20
+ "151645": {
21
+ "content": "<|im_end|>",
22
+ "lstrip": false,
23
+ "normalized": false,
24
+ "rstrip": false,
25
+ "single_word": false,
26
+ "special": true
27
+ },
28
+ "151646": {
29
+ "content": "<|object_ref_start|>",
30
+ "lstrip": false,
31
+ "normalized": false,
32
+ "rstrip": false,
33
+ "single_word": false,
34
+ "special": true
35
+ },
36
+ "151647": {
37
+ "content": "<|object_ref_end|>",
38
+ "lstrip": false,
39
+ "normalized": false,
40
+ "rstrip": false,
41
+ "single_word": false,
42
+ "special": true
43
+ },
44
+ "151648": {
45
+ "content": "<|box_start|>",
46
+ "lstrip": false,
47
+ "normalized": false,
48
+ "rstrip": false,
49
+ "single_word": false,
50
+ "special": true
51
+ },
52
+ "151649": {
53
+ "content": "<|box_end|>",
54
+ "lstrip": false,
55
+ "normalized": false,
56
+ "rstrip": false,
57
+ "single_word": false,
58
+ "special": true
59
+ },
60
+ "151650": {
61
+ "content": "<|quad_start|>",
62
+ "lstrip": false,
63
+ "normalized": false,
64
+ "rstrip": false,
65
+ "single_word": false,
66
+ "special": true
67
+ },
68
+ "151651": {
69
+ "content": "<|quad_end|>",
70
+ "lstrip": false,
71
+ "normalized": false,
72
+ "rstrip": false,
73
+ "single_word": false,
74
+ "special": true
75
+ },
76
+ "151652": {
77
+ "content": "<|vision_start|>",
78
+ "lstrip": false,
79
+ "normalized": false,
80
+ "rstrip": false,
81
+ "single_word": false,
82
+ "special": true
83
+ },
84
+ "151653": {
85
+ "content": "<|vision_end|>",
86
+ "lstrip": false,
87
+ "normalized": false,
88
+ "rstrip": false,
89
+ "single_word": false,
90
+ "special": true
91
+ },
92
+ "151654": {
93
+ "content": "<|vision_pad|>",
94
+ "lstrip": false,
95
+ "normalized": false,
96
+ "rstrip": false,
97
+ "single_word": false,
98
+ "special": true
99
+ },
100
+ "151655": {
101
+ "content": "<|image_pad|>",
102
+ "lstrip": false,
103
+ "normalized": false,
104
+ "rstrip": false,
105
+ "single_word": false,
106
+ "special": true
107
+ },
108
+ "151656": {
109
+ "content": "<|video_pad|>",
110
+ "lstrip": false,
111
+ "normalized": false,
112
+ "rstrip": false,
113
+ "single_word": false,
114
+ "special": true
115
+ },
116
+ "151657": {
117
+ "content": "<|ref_start|>",
118
+ "lstrip": false,
119
+ "normalized": false,
120
+ "rstrip": false,
121
+ "single_word": false,
122
+ "special": true
123
+ },
124
+ "151658": {
125
+ "content": "<|ref_end|>",
126
+ "lstrip": false,
127
+ "normalized": false,
128
+ "rstrip": false,
129
+ "single_word": false,
130
+ "special": true
131
+ },
132
+ "151659": {
133
+ "content": "<|md_start|>",
134
+ "lstrip": false,
135
+ "normalized": false,
136
+ "rstrip": false,
137
+ "single_word": false,
138
+ "special": true
139
+ },
140
+ "151660": {
141
+ "content": "<|md_end|>",
142
+ "lstrip": false,
143
+ "normalized": false,
144
+ "rstrip": false,
145
+ "single_word": false,
146
+ "special": true
147
+ },
148
+ "151661": {
149
+ "content": "<ched>",
150
+ "lstrip": false,
151
+ "normalized": false,
152
+ "rstrip": false,
153
+ "single_word": false,
154
+ "special": true
155
+ },
156
+ "151662": {
157
+ "content": "<ecel>",
158
+ "lstrip": false,
159
+ "normalized": false,
160
+ "rstrip": false,
161
+ "single_word": false,
162
+ "special": true
163
+ },
164
+ "151663": {
165
+ "content": "<fcel>",
166
+ "lstrip": false,
167
+ "normalized": false,
168
+ "rstrip": false,
169
+ "single_word": false,
170
+ "special": true
171
+ },
172
+ "151664": {
173
+ "content": "<lcel>",
174
+ "lstrip": false,
175
+ "normalized": false,
176
+ "rstrip": false,
177
+ "single_word": false,
178
+ "special": true
179
+ },
180
+ "151665": {
181
+ "content": "<ucel>",
182
+ "lstrip": false,
183
+ "normalized": false,
184
+ "rstrip": false,
185
+ "single_word": false,
186
+ "special": true
187
+ },
188
+ "151666": {
189
+ "content": "<xcel>",
190
+ "lstrip": false,
191
+ "normalized": false,
192
+ "rstrip": false,
193
+ "single_word": false,
194
+ "special": true
195
+ },
196
+ "151667": {
197
+ "content": "<nl>",
198
+ "lstrip": false,
199
+ "normalized": false,
200
+ "rstrip": false,
201
+ "single_word": false,
202
+ "special": true
203
+ },
204
+ "151668": {
205
+ "content": "<|rotate_up|>",
206
+ "lstrip": false,
207
+ "normalized": false,
208
+ "rstrip": false,
209
+ "single_word": false,
210
+ "special": true
211
+ },
212
+ "151669": {
213
+ "content": "<|rotate_down|>",
214
+ "lstrip": false,
215
+ "normalized": false,
216
+ "rstrip": false,
217
+ "single_word": false,
218
+ "special": true
219
+ },
220
+ "151670": {
221
+ "content": "<|rotate_left|>",
222
+ "lstrip": false,
223
+ "normalized": false,
224
+ "rstrip": false,
225
+ "single_word": false,
226
+ "special": true
227
+ },
228
+ "151671": {
229
+ "content": "<|rotate_right|>",
230
+ "lstrip": false,
231
+ "normalized": false,
232
+ "rstrip": false,
233
+ "single_word": false,
234
+ "special": true
235
+ },
236
+ "151672": {
237
+ "content": "<|txt_contd|>",
238
+ "lstrip": false,
239
+ "normalized": false,
240
+ "rstrip": false,
241
+ "single_word": false,
242
+ "special": true
243
+ },
244
+ "151673": {
245
+ "content": "<|paratext|>",
246
+ "lstrip": false,
247
+ "normalized": false,
248
+ "rstrip": false,
249
+ "single_word": false,
250
+ "special": true
251
+ }
252
+ },
253
+ "additional_special_tokens": [
254
+ "<|im_start|>",
255
+ "<|im_end|>",
256
+ "<|object_ref_start|>",
257
+ "<|object_ref_end|>",
258
+ "<|box_start|>",
259
+ "<|box_end|>",
260
+ "<|quad_start|>",
261
+ "<|quad_end|>",
262
+ "<|vision_start|>",
263
+ "<|vision_end|>",
264
+ "<|vision_pad|>",
265
+ "<|image_pad|>",
266
+ "<|video_pad|>",
267
+ "<|ref_start|>",
268
+ "<|ref_end|>",
269
+ "<|md_start|>",
270
+ "<|md_end|>",
271
+ "<ched>",
272
+ "<ecel>",
273
+ "<fcel>",
274
+ "<lcel>",
275
+ "<ucel>",
276
+ "<xcel>",
277
+ "<nl>",
278
+ "<|rotate_up|>",
279
+ "<|rotate_down|>",
280
+ "<|rotate_left|>",
281
+ "<|rotate_right|>",
282
+ "<|txt_contd|>",
283
+ "<|paratext|>"
284
+ ],
285
+ "bos_token": null,
286
+ "clean_up_tokenization_spaces": false,
287
+ "eos_token": "<|im_end|>",
288
+ "errors": "replace",
289
+ "extra_special_tokens": {},
290
+ "model_max_length": 16384,
291
+ "pad_token": "<|endoftext|>",
292
+ "padding_side": "left",
293
+ "processor_class": "Qwen2VLProcessor",
294
+ "split_special_tokens": false,
295
+ "tokenizer_class": "Qwen2Tokenizer",
296
+ "unk_token": null
297
+ }
layout/decoder/tokenizer/vocab.json ADDED
The diff for this file is too large to render. See raw diff
 
layout/vision/mineru_vision.aimodel/main.hash ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ �9���K�����:
2
+ {=�$i���IWI�!N�
layout/vision/mineru_vision.aimodel/main.mlirb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a2399fa8bd4bea90f2d7f8a23a0a7b1b023dee246989bad249574908f7214e97
3
+ size 1325968609
layout/vision/mineru_vision.aimodel/metadata.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "assetVersion" : "2.0"
3
+ }