Views
No views yet
messages format, which computed loss over prompt and image tokens as well as the assistant answer. This v4 run switches to prompt + completion format with completion_only_loss=True.1{
2 "schema_version": "korie_receipt_ie.v2",
3 "merchant_name": null,
4 "merchant_address": null,
5 "merchant_phone_number": null,
6 "receipt_number": null,
7 "transaction_date": null,
8 "transaction_time": null,
9 "subtotal": null,
10 "total_tax": null,
11 "total_discount": null,
12 "tip": null,
13 "total": null,
14 "currency": "KRW",
15 "item_barcodes": [],
16 "items": [],
17 "field_status": {"missing": [], "uncertain": []}
18}Qwen/Qwen2.5-VL-3B-Instructq_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_projIMG00016, IMG00018, IMG00025, IMG00028, IMG00048.| Model / decoding | Valid JSON | Scalar field accuracy |
|---|---|---|
| Base model + strict prompt | 0.80 | 0.600 |
| Previous public LoRA + strict prompt | 1.00 | 0.667 |
| v3 incorrect full-message loss | 1.00 | 0.583 |
| v4, repetition penalty 1.15 | 1.00 | 0.683 |
| v4, repetition penalty 1.0 | 1.00 | 0.750 |
do_sample=Falserepetition_penalty=1.0max_new_tokens=2048subtotal, total_tax, receipt number disambiguation, and phone-number formatting. OCR text injection and deterministic post-processing are recommended for higher production accuracy.receipt_vlm_training_summary.json: final training metricseval/korie_val5_v4_lora_rp100_eval.json: best quick generation evaleval/korie_val5_v4_lora_rp115_eval.json: comparison evaldataset/dataset_report.json: cleaned dataset report1from peft import PeftModel
2from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
3
4base = "Qwen/Qwen2.5-VL-3B-Instruct"
5adapter = "hoin1218/receipt-qwen25vl-3b-korie-v4-lora"
6
7processor = AutoProcessor.from_pretrained(base)
8model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
9 base,
10 device_map="auto",
11 torch_dtype="auto",
12)
13model = PeftModel.from_pretrained(model, adapter)
14model.eval()