Downloads · 30 days
8
11% of all-time downloads
hoin1218/receipt-qwen25vl-3b-lora
receipt-qwen25vl-3b-lora is a image-text-to-text model from hoin1218. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for peft. The card lists the license as other.
This repository contains a LoRA adapter for receipt image information extraction with Qwen/Qwen2.5-VL-3B-Instruct as the base model.
Downloads · 30 days
8
11% of all-time downloads
All-time downloads
74
Public
Repo size
18.8 MB
Likes
0
Public
Click a slice to open those files.
.json11.6 MB · 61%
From the Hugging Face model README
This repository contains a LoRA adapter for receipt image information extraction with Qwen/Qwen2.5-VL-3B-Instruct as the base model.
The intended task is:
receipt image -> strict receipt_extraction.v1 JSON
This is an early public bootstrap model. It is useful for testing a receipt-to-JSON workflow, but it is not production-ready for Korean ERP evidence automation without additional in-domain Korean receipt labels.
Qwen/Qwen2.5-VL-3B-InstructThe training set was built from public receipt key-information-extraction datasets.
| Dataset | Used Split / Count | License | Notes |
|---|---|---|---|
jsdnrs/ICDAR2019-SROIE | 987 training examples | CC-BY-4.0 | Receipt KIE fields such as company, date, address, total |
nanonets/key_information_extraction | 691 training examples, 296 validation examples | Apache-2.0 | Receipt KIE fields such as seller, date, receipt number, tax, amount |
Dataset build summary:
| Split | Count |
|---|---|
| Train | 1,678 |
| Validation | 296 |
| Total prepared examples | 1,974 |
The training target schema was normalized to:
{
"schema_version": "receipt_extraction.v1",
"document_type": "CARD_RECEIPT|GENERAL_RECEIPT|TAX_INVOICE|INVOICE|UNKNOWN",
"merchant_name": "string|null",
"business_no": "string|null",
"transaction_date": "YYYY-MM-DD|null",
"transaction_time": "HH:MM:SS|null",
"approval_no": "string|null",
"receipt_no": "string|null",
"card_no_masked": "string|null",
"supply_amount": "number|null",
"vat_amount": "number|null",
"total_amount": "number|null",
"currency": "string|null",
"address": "string|null",
"phone_number": "string|null",
"items": []
}
| Item | Value |
|---|---|
| Train samples | 1,678 |
| Eval samples | 296 |
| Epochs | 1 |
| Optimizer steps | 210 |
| Effective batch size | 8 |
| Runtime | 11,838.942 sec, about 3h 17m 19s |
| Train loss | 7.028 |
| Eval loss | 6.165 |
Evaluation was run on the first 20 validation examples from nanonets/key_information_extraction.
The metric is strict field-level exact match after light scalar normalization. This is intentionally harsh for addresses and formatting-heavy fields. It is still useful for seeing whether the adapter is actually improving the fields required by ERP evidence processing.
| Model | Valid JSON Rate | All-field Exact Match | Critical-field Exact Match | Runtime | Sec / Image |
|---|---|---|---|---|---|
| Qwen2.5-VL-3B base | 95.0% | 58.9% | 70.6% | 453.0 sec | 22.7 |
| This LoRA adapter | 100.0% | 65.7% | 40.0% | 340.3 sec | 17.0 |
Critical fields used for the comparison:
merchant_name, business_no, transaction_date, receipt_no,
vat_amount, total_amount, address, phone_number
| Field | Base | LoRA |
|---|---|---|
| document_type | 0% | 100% |
| merchant_name | 85% | 80% |
| business_no | 10% | 20% |
| transaction_date | 85% | 5% |
| transaction_time | 5% | 100% |
| approval_no | 80% | 100% |
| receipt_no | 65% | 20% |
| card_no_masked | 100% | 100% |
| supply_amount | 70% | 100% |
| vat_amount | 80% | 15% |
| total_amount | 90% | 90% |
| currency | 5% | 100% |
| address | 70% | 70% |
| phone_number | 80% | 20% |
This adapter improved strict JSON compliance and schema discipline, but the preliminary test shows that it is not yet better than the base model on several critical receipt fields.
Observed behavior:
For practical Korean ERP receipt extraction, use this model as a bootstrap only.
Recommended improvement path:
merchant_name, business_no, transaction_date, approval_no, supply_amount, vat_amount, and total_amount.This repository is a PEFT LoRA adapter. Load it together with the base model:
from peft import PeftModel
from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
base_model = "Qwen/Qwen2.5-VL-3B-Instruct"
adapter_model = "hoin1218/receipt-qwen25vl-3b-lora"
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(base_model, device_map="auto")
model = PeftModel.from_pretrained(model, adapter_model)
processor = AutoProcessor.from_pretrained(adapter_model)