from PIL import Imagefrom transformers import Qwen2VLForConditionalGeneration, AutoProcessorimport torchimport osfrom qwen_vl_utils import process_vision_info model_name = "NAMAA-Space/Qari-OCR-v0.3-VL-2B-Instruct"model = Qwen2VLForConditionalGeneration.from_pretrained( model_name, torch_dtype="auto", device_map="auto" )processor = AutoProcessor.from_pretrained(model_name)max_tokens = 2000 prompt = "Below is the image of one page of a document, as well as some raw textual content that was previously extracted for it. Just return the plain text representation of this document as if you were reading it naturally. Do not hallucinate."image.save("image.png") messages = [ { "role": "user", "content": [ {"type": "image", "image": f"file://{src}"}, {"type": "text", "text": prompt}, ], }]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")generated_ids = model.generate(**inputs, max_new_tokens=max_tokens)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)[0]os.remove(src)print(output_text)