-
Context-Aware Multimodal Extraction and Linking for Documents: Advanced capability for understanding document context and establishing connections between multimodal elements within documents.
-
Enhanced Document Retrieval: Designed to efficiently locate and extract relevant information from complex document structures and layouts.
-
Superior Content Extraction: Optimized for precise extraction of structured and unstructured content from diverse document formats.
-
Analysis Recognition: Specialized in recognizing and interpreting analytical content, charts, tables, and visual data representations.
-
State-of-the-Art Performance Across Resolutions: Achieves competitive results on OCR and visual QA benchmarks such as DocVQA, MathVista, RealWorldQA, and MTVQA.
-
Video Understanding up to 20+ minutes: Supports detailed comprehension of long-duration videos for content summarization, Q&A, and multi-modal reasoning.
-
Visually-Grounded Device Interaction: Enables mobile/robotic device operation via visual inputs and text-based instructions using contextual understanding and decision-making logic.
1from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
2from qwen_vl_utils import process_vision_info
3
4model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
5 "prithivMLmods/Perseus-Doc-vl-0712", torch_dtype="auto", device_map="auto"
6)
7
8processor = AutoProcessor.from_pretrained("prithivMLmods/Perseus-Doc-vl-0712")
9
10messages = [
11 {
12 "role": "user",
13 "content": [
14 {
15 "type": "image",
16 "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
17 },
18 {"type": "text", "text": "Describe this image."},
19 ],
20 }
21]
22
23text = processor.apply_chat_template(
24 messages, tokenize=False, add_generation_prompt=True
25)
26image_inputs, video_inputs = process_vision_info(messages)
27inputs = processor(
28 text=[text],
29 images=image_inputs,
30 videos=video_inputs,
31 padding=True,
32 return_tensors="pt",
33)
34inputs = inputs.to("cuda")
35
36generated_ids = model.generate(**inputs, max_new_tokens=128)
37generated_ids_trimmed = [
38 out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
39]
40output_text = processor.batch_decode(
41 generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
42)
43print(output_text)