初始化项目,由ModelHub XC社区提供模型

Model: prithivMLmods/Tokenized-OCR
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-09-07 09:56:13 +08:00
commit 2a272f7c5c
15 changed files with 152144 additions and 0 deletions

37
.gitattributes vendored Normal file
View File

@@ -0,0 +1,37 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
tokenizer.json filter=lfs diff=lfs merge=lfs -text
model.safetensors filter=lfs diff=lfs merge=lfs -text

112
README.md Normal file
View File

@@ -0,0 +1,112 @@
---
license: apache-2.0
language:
- en
- zh
base_model:
- prithivMLmods/Qwen2-VL-OCR-2B-Instruct
pipeline_tag: image-to-text
library_name: transformers
tags:
- text-generation-inference
- bpe
- ocr
---
# **Bpe-vocab-n-OCR**
![bpe.png](https://cdn-uploads.huggingface.co/production/uploads/65bb837dbfb878f46c77de4c/f3-ZGWYpFHmRn7L-hSvtt.png)
**Bpe-vocab-n-OCR** is an advanced OCR-based text extraction tool optimized for generating structured, tokenized outputs. Built upon a powerful vision-language architecture with enhanced OCR and multilingual support, Bpe-vocab-n-OCR accurately extracts text from images and returns it as a comma-separated sequence.
#### Key Enhancements:
* **Advanced OCR Engine**: Fine-tuned on extensive datasets, Bpe-vocab-n-OCR ensures precise text recognition and tokenization.
* **Optimized for Tokenized Output**: Produces structured comma-separated text, making it ideal for downstream NLP tasks, automation pipelines, and database integrations.
* **Enhanced Multilingual OCR**: Supports text extraction in multiple languages, including English, Chinese, Japanese, Korean, Arabic, and more.
* **Multimodal Processing**: Seamlessly processes both image and text inputs, providing structured tokenized outputs.
* **Secure and Optimized Model Weights**: Employs safetensors for efficient and secure model loading.
![sdsdfsd.png](https://cdn-uploads.huggingface.co/production/uploads/65bb837dbfb878f46c77de4c/XT1Qe2WxVzclETv6Rmgfs.png)
### How to Use
```python
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
# Load the Bpe-vocab-n-OCR model with optimized parameters
model = Qwen2VLForConditionalGeneration.from_pretrained(
"prithivMLmods/Tokenized-OCR", torch_dtype="auto", device_map="auto"
)
# Recommended acceleration for performance optimization:
# model = Qwen2VLForConditionalGeneration.from_pretrained(
# "prithivMLmods/Tokenized-OCR",
# torch_dtype=torch.bfloat16,
# attn_implementation="flash_attention_2",
# device_map="auto",
# )
# Load the default processor for Bpe-vocab-n-OCR
processor = AutoProcessor.from_pretrained("prithivMLmods/Tokenized-OCR")
# Define the input messages with both an image and a text prompt
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": "https://flux-generated.com/sample_image.jpeg",
},
{"type": "text", "text": "Extract and return the tokenized OCR text from the image, ensuring each word is accurately recognized and separated by commas."},
],
}
]
# Prepare the input for inference
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
# Generate the output
generated_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
```
### **Key Features**
1. **High-Accuracy OCR Processing**
* Extracts and tokenizes text from images with exceptional precision.
2. **Multilingual Text Recognition**
* Supports multiple languages, ensuring comprehensive OCR capabilities.
3. **Comma-Separated Tokenized Output**
* Generates structured text for seamless NLP and data processing tasks.
4. **Efficient Image & Text Processing**
* Handles both visual and textual inputs, ensuring accurate OCR-based extraction.
5. **Optimized for Secure Deployment**
* Uses safetensors for enhanced security and model efficiency.

16
added_tokens.json Normal file
View File

@@ -0,0 +1,16 @@
{
"<|box_end|>": 151649,
"<|box_start|>": 151648,
"<|endoftext|>": 151643,
"<|im_end|>": 151645,
"<|im_start|>": 151644,
"<|image_pad|>": 151655,
"<|object_ref_end|>": 151647,
"<|object_ref_start|>": 151646,
"<|quad_end|>": 151651,
"<|quad_start|>": 151650,
"<|video_pad|>": 151656,
"<|vision_end|>": 151653,
"<|vision_pad|>": 151654,
"<|vision_start|>": 151652
}

3
chat_template.json Normal file
View File

@@ -0,0 +1,3 @@
{
"chat_template": "{% 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\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% 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|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% endif %}"
}

50
config.json Normal file
View File

@@ -0,0 +1,50 @@
{
"_name_or_path": "prithivMLmods/Tokenized-OCR",
"architectures": [
"Qwen2VLForConditionalGeneration"
],
"attention_dropout": 0.0,
"bos_token_id": 151643,
"eos_token_id": 151645,
"hidden_act": "silu",
"hidden_size": 1536,
"image_token_id": 151655,
"initializer_range": 0.02,
"intermediate_size": 8960,
"max_position_embeddings": 32768,
"max_window_layers": 28,
"model_type": "qwen2_vl",
"num_attention_heads": 12,
"num_hidden_layers": 28,
"num_key_value_heads": 2,
"pad_token_id": 151654,
"rms_norm_eps": 1e-06,
"rope_scaling": {
"mrope_section": [
16,
24,
24
],
"rope_type": "default",
"type": "default"
},
"rope_theta": 1000000.0,
"sliding_window": 32768,
"tie_word_embeddings": true,
"torch_dtype": "float16",
"transformers_version": "4.48.3",
"use_cache": true,
"use_sliding_window": false,
"video_token_id": 151656,
"vision_config": {
"hidden_size": 1536,
"in_chans": 3,
"model_type": "qwen2_vl",
"spatial_patch_size": 14,
"torch_dtype": "float16"
},
"vision_end_token_id": 151653,
"vision_start_token_id": 151652,
"vision_token_id": 151654,
"vocab_size": 151936
}

1
configuration.json Normal file
View File

@@ -0,0 +1 @@
{"framework": "pytorch", "task": "image-text-to-text", "allow_remote": true}

View File

@@ -0,0 +1,311 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "N1V85nNJCduY"
},
"outputs": [],
"source": [
"import gradio as gr\n",
"import spaces\n",
"from transformers import Qwen2VLForConditionalGeneration, AutoProcessor, TextIteratorStreamer\n",
"from qwen_vl_utils import process_vision_info\n",
"import torch\n",
"from PIL import Image\n",
"import os\n",
"import uuid\n",
"import io\n",
"from threading import Thread\n",
"from reportlab.lib.pagesizes import A4\n",
"from reportlab.lib.styles import getSampleStyleSheet\n",
"from reportlab.lib import colors\n",
"from reportlab.platypus import SimpleDocTemplate, Image as RLImage, Paragraph, Spacer\n",
"from reportlab.lib.units import inch\n",
"from reportlab.pdfbase import pdfmetrics\n",
"from reportlab.pdfbase.ttfonts import TTFont\n",
"import docx\n",
"from docx.enum.text import WD_ALIGN_PARAGRAPH\n",
"\n",
"# Define model options\n",
"MODEL_OPTIONS = {\n",
" \"Bpe-vocab-n-OCR\": \"prithivMLmods/Bpe-vocab-n-OCR\",\n",
"}\n",
"\n",
"# Preload models and processors into CUDA\n",
"models = {}\n",
"processors = {}\n",
"for name, model_id in MODEL_OPTIONS.items():\n",
" print(f\"Loading {name}...\")\n",
" models[name] = Qwen2VLForConditionalGeneration.from_pretrained(\n",
" model_id,\n",
" trust_remote_code=True,\n",
" torch_dtype=torch.float16\n",
" ).to(\"cuda\").eval()\n",
" processors[name] = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)\n",
"\n",
"image_extensions = Image.registered_extensions()\n",
"\n",
"def identify_and_save_blob(blob_path):\n",
" \"\"\"Identifies if the blob is an image and saves it.\"\"\"\n",
" try:\n",
" with open(blob_path, 'rb') as file:\n",
" blob_content = file.read()\n",
" try:\n",
" Image.open(io.BytesIO(blob_content)).verify() # Check if it's a valid image\n",
" extension = \".png\" # Default to PNG for saving\n",
" media_type = \"image\"\n",
" except (IOError, SyntaxError):\n",
" raise ValueError(\"Unsupported media type. Please upload a valid image.\")\n",
"\n",
" filename = f\"temp_{uuid.uuid4()}_media{extension}\"\n",
" with open(filename, \"wb\") as f:\n",
" f.write(blob_content)\n",
"\n",
" return filename, media_type\n",
"\n",
" except FileNotFoundError:\n",
" raise ValueError(f\"The file {blob_path} was not found.\")\n",
" except Exception as e:\n",
" raise ValueError(f\"An error occurred while processing the file: {e}\")\n",
"\n",
"@spaces.GPU\n",
"def qwen_inference(model_name, media_input, text_input=None):\n",
" \"\"\"Handles inference for the selected model.\"\"\"\n",
" model = models[model_name]\n",
" processor = processors[model_name]\n",
"\n",
" if isinstance(media_input, str):\n",
" media_path = media_input\n",
" if media_path.endswith(tuple([i for i in image_extensions.keys()])):\n",
" media_type = \"image\"\n",
" else:\n",
" try:\n",
" media_path, media_type = identify_and_save_blob(media_input)\n",
" except Exception as e:\n",
" raise ValueError(\"Unsupported media type. Please upload a valid image.\")\n",
"\n",
" messages = [\n",
" {\n",
" \"role\": \"user\",\n",
" \"content\": [\n",
" {\n",
" \"type\": media_type,\n",
" media_type: media_path\n",
" },\n",
" {\"type\": \"text\", \"text\": text_input},\n",
" ],\n",
" }\n",
" ]\n",
"\n",
" text = processor.apply_chat_template(\n",
" messages, tokenize=False, add_generation_prompt=True\n",
" )\n",
" image_inputs, _ = process_vision_info(messages)\n",
" inputs = processor(\n",
" text=[text],\n",
" images=image_inputs,\n",
" padding=True,\n",
" return_tensors=\"pt\",\n",
" ).to(\"cuda\")\n",
"\n",
" streamer = TextIteratorStreamer(\n",
" processor.tokenizer, skip_prompt=True, skip_special_tokens=True\n",
" )\n",
" generation_kwargs = dict(inputs, streamer=streamer, max_new_tokens=1024)\n",
"\n",
" thread = Thread(target=model.generate, kwargs=generation_kwargs)\n",
" thread.start()\n",
"\n",
" buffer = \"\"\n",
" for new_text in streamer:\n",
" buffer += new_text\n",
" # Remove <|im_end|> or similar tokens from the output\n",
" buffer = buffer.replace(\"<|im_end|>\", \"\")\n",
" yield buffer\n",
"\n",
"def format_plain_text(output_text):\n",
" \"\"\"Formats the output text as plain text without LaTeX delimiters.\"\"\"\n",
" # Remove LaTeX delimiters and convert to plain text\n",
" plain_text = output_text.replace(\"\\\\(\", \"\").replace(\"\\\\)\", \"\").replace(\"\\\\[\", \"\").replace(\"\\\\]\", \"\")\n",
" return plain_text\n",
"\n",
"def generate_document(media_path, output_text, file_format, font_size, line_spacing, alignment, image_size):\n",
" \"\"\"Generates a document with the input image and plain text output.\"\"\"\n",
" plain_text = format_plain_text(output_text)\n",
" if file_format == \"pdf\":\n",
" return generate_pdf(media_path, plain_text, font_size, line_spacing, alignment, image_size)\n",
" elif file_format == \"docx\":\n",
" return generate_docx(media_path, plain_text, font_size, line_spacing, alignment, image_size)\n",
"\n",
"def generate_pdf(media_path, plain_text, font_size, line_spacing, alignment, image_size):\n",
" \"\"\"Generates a PDF document.\"\"\"\n",
" filename = f\"output_{uuid.uuid4()}.pdf\"\n",
" doc = SimpleDocTemplate(\n",
" filename,\n",
" pagesize=A4,\n",
" rightMargin=inch,\n",
" leftMargin=inch,\n",
" topMargin=inch,\n",
" bottomMargin=inch\n",
" )\n",
" styles = getSampleStyleSheet()\n",
" styles[\"Normal\"].fontSize = int(font_size)\n",
" styles[\"Normal\"].leading = int(font_size) * line_spacing\n",
" styles[\"Normal\"].alignment = {\n",
" \"Left\": 0,\n",
" \"Center\": 1,\n",
" \"Right\": 2,\n",
" \"Justified\": 4\n",
" }[alignment]\n",
"\n",
" story = []\n",
"\n",
" # Add image with size adjustment\n",
" image_sizes = {\n",
" \"Small\": (200, 200),\n",
" \"Medium\": (400, 400),\n",
" \"Large\": (600, 600)\n",
" }\n",
" img = RLImage(media_path, width=image_sizes[image_size][0], height=image_sizes[image_size][1])\n",
" story.append(img)\n",
" story.append(Spacer(1, 12))\n",
"\n",
" # Add plain text output\n",
" text = Paragraph(plain_text, styles[\"Normal\"])\n",
" story.append(text)\n",
"\n",
" doc.build(story)\n",
" return filename\n",
"\n",
"def generate_docx(media_path, plain_text, font_size, line_spacing, alignment, image_size):\n",
" \"\"\"Generates a DOCX document.\"\"\"\n",
" filename = f\"output_{uuid.uuid4()}.docx\"\n",
" doc = docx.Document()\n",
"\n",
" # Add image with size adjustment\n",
" image_sizes = {\n",
" \"Small\": docx.shared.Inches(2),\n",
" \"Medium\": docx.shared.Inches(4),\n",
" \"Large\": docx.shared.Inches(6)\n",
" }\n",
" doc.add_picture(media_path, width=image_sizes[image_size])\n",
" doc.add_paragraph()\n",
"\n",
" # Add plain text output\n",
" paragraph = doc.add_paragraph()\n",
" paragraph.paragraph_format.line_spacing = line_spacing\n",
" paragraph.paragraph_format.alignment = {\n",
" \"Left\": WD_ALIGN_PARAGRAPH.LEFT,\n",
" \"Center\": WD_ALIGN_PARAGRAPH.CENTER,\n",
" \"Right\": WD_ALIGN_PARAGRAPH.RIGHT,\n",
" \"Justified\": WD_ALIGN_PARAGRAPH.JUSTIFY\n",
" }[alignment]\n",
" run = paragraph.add_run(plain_text)\n",
" run.font.size = docx.shared.Pt(int(font_size))\n",
"\n",
" doc.save(filename)\n",
" return filename\n",
"\n",
"# CSS for output styling\n",
"css = \"\"\"\n",
" #output {\n",
" height: 500px;\n",
" overflow: auto;\n",
" border: 1px solid #ccc;\n",
" }\n",
".submit-btn {\n",
" background-color: #cf3434 !important;\n",
" color: white !important;\n",
"}\n",
".submit-btn:hover {\n",
" background-color: #ff2323 !important;\n",
"}\n",
".download-btn {\n",
" background-color: #35a6d6 !important;\n",
" color: white !important;\n",
"}\n",
".download-btn:hover {\n",
" background-color: #22bcff !important;\n",
"}\n",
"\"\"\"\n",
"\n",
"# Gradio app setup\n",
"with gr.Blocks(css=css) as demo:\n",
" gr.Markdown(\"# Qwen2VL Models: Vision and Language Processing\")\n",
"\n",
" with gr.Tab(label=\"Image Input\"):\n",
"\n",
" with gr.Row():\n",
" with gr.Column():\n",
" model_choice = gr.Dropdown(\n",
" label=\"Model Selection\",\n",
" choices=list(MODEL_OPTIONS.keys()),\n",
" value=\"Bpe-vocab-n-OCR\"\n",
" )\n",
" input_media = gr.File(\n",
" label=\"Upload Image\", type=\"filepath\"\n",
" )\n",
" text_input = gr.Textbox(label=\"Question\", placeholder=\"Ask a question about the image...\")\n",
" submit_btn = gr.Button(value=\"Submit\", elem_classes=\"submit-btn\")\n",
"\n",
" with gr.Column():\n",
" output_text = gr.Textbox(label=\"Output Text\", lines=10)\n",
" plain_text_output = gr.Textbox(label=\"Standardized Plain Text\", lines=10)\n",
"\n",
" submit_btn.click(\n",
" qwen_inference, [model_choice, input_media, text_input], [output_text]\n",
" ).then(\n",
" lambda output_text: format_plain_text(output_text), [output_text], [plain_text_output]\n",
" )\n",
"\n",
" # Add examples directly usable by clicking\n",
" with gr.Row():\n",
" with gr.Column():\n",
" line_spacing = gr.Dropdown(\n",
" choices=[0.5, 1.0, 1.15, 1.5, 2.0, 2.5, 3.0],\n",
" value=1.5,\n",
" label=\"Line Spacing\"\n",
" )\n",
" font_size = gr.Dropdown(\n",
" choices=[\"8\", \"10\", \"12\", \"14\", \"16\", \"18\", \"20\", \"22\", \"24\"],\n",
" value=\"18\",\n",
" label=\"Font Size\"\n",
" )\n",
" alignment = gr.Dropdown(\n",
" choices=[\"Left\", \"Center\", \"Right\", \"Justified\"],\n",
" value=\"Justified\",\n",
" label=\"Text Alignment\"\n",
" )\n",
" image_size = gr.Dropdown(\n",
" choices=[\"Small\", \"Medium\", \"Large\"],\n",
" value=\"Small\",\n",
" label=\"Image Size\"\n",
" )\n",
" file_format = gr.Radio([\"pdf\", \"docx\"], label=\"File Format\", value=\"pdf\")\n",
" get_document_btn = gr.Button(value=\"Get Document\", elem_classes=\"download-btn\")\n",
"\n",
" get_document_btn.click(\n",
" generate_document, [input_media, output_text, file_format, font_size, line_spacing, alignment, image_size], gr.File(label=\"Download Document\")\n",
" )\n",
"\n",
"demo.launch(debug=True)"
]
}
]
}

14
generation_config.json Normal file
View File

@@ -0,0 +1,14 @@
{
"bos_token_id": 151643,
"do_sample": true,
"eos_token_id": [
151645,
151643
],
"max_length": 32768,
"pad_token_id": 151654,
"temperature": 0.01,
"top_k": 1,
"top_p": 0.001,
"transformers_version": "4.48.3"
}

151388
merges.txt Normal file

File diff suppressed because it is too large Load Diff

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5df4ef870a01625e04e5ca7a314b1184d9b9ee5e54daf7ba3faf7679df53a668
size 4418049776

29
preprocessor_config.json Normal file
View File

@@ -0,0 +1,29 @@
{
"do_convert_rgb": true,
"do_normalize": true,
"do_rescale": true,
"do_resize": true,
"image_mean": [
0.48145466,
0.4578275,
0.40821073
],
"image_processor_type": "Qwen2VLImageProcessor",
"image_std": [
0.26862954,
0.26130258,
0.27577711
],
"max_pixels": 12845056,
"merge_size": 2,
"min_pixels": 3136,
"patch_size": 14,
"processor_class": "Qwen2VLProcessor",
"resample": 3,
"rescale_factor": 0.00392156862745098,
"size": {
"longest_edge": 12845056,
"shortest_edge": 3136
},
"temporal_patch_size": 2
}

31
special_tokens_map.json Normal file
View File

@@ -0,0 +1,31 @@
{
"additional_special_tokens": [
"<|im_start|>",
"<|im_end|>",
"<|object_ref_start|>",
"<|object_ref_end|>",
"<|box_start|>",
"<|box_end|>",
"<|quad_start|>",
"<|quad_end|>",
"<|vision_start|>",
"<|vision_end|>",
"<|vision_pad|>",
"<|image_pad|>",
"<|video_pad|>"
],
"eos_token": {
"content": "<|im_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"pad_token": {
"content": "<|vision_pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

3
tokenizer.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:948c45c29a91dd2e6ae77d6f5a324a3d408bcca6ad443365b2e79986f1422771
size 11420540

145
tokenizer_config.json Normal file
View File

@@ -0,0 +1,145 @@
{
"add_prefix_space": false,
"added_tokens_decoder": {
"151643": {
"content": "<|endoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151644": {
"content": "<|im_start|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151645": {
"content": "<|im_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151646": {
"content": "<|object_ref_start|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151647": {
"content": "<|object_ref_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151648": {
"content": "<|box_start|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151649": {
"content": "<|box_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151650": {
"content": "<|quad_start|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151651": {
"content": "<|quad_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151652": {
"content": "<|vision_start|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151653": {
"content": "<|vision_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151654": {
"content": "<|vision_pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151655": {
"content": "<|image_pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
},
"151656": {
"content": "<|video_pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
}
},
"additional_special_tokens": [
"<|im_start|>",
"<|im_end|>",
"<|object_ref_start|>",
"<|object_ref_end|>",
"<|box_start|>",
"<|box_end|>",
"<|quad_start|>",
"<|quad_end|>",
"<|vision_start|>",
"<|vision_end|>",
"<|vision_pad|>",
"<|image_pad|>",
"<|video_pad|>"
],
"bos_token": null,
"chat_template": "{% 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\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% 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|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% endif %}",
"clean_up_tokenization_spaces": false,
"eos_token": "<|im_end|>",
"errors": "replace",
"extra_special_tokens": {},
"model_max_length": 32768,
"pad_token": "<|vision_pad|>",
"padding_side": "right",
"processor_class": "Qwen2VLProcessor",
"split_special_tokens": false,
"tokenizer_class": "Qwen2Tokenizer",
"unk_token": null
}

1
vocab.json Normal file

File diff suppressed because one or more lines are too long