ResuVL-M

ResuVL-M is the medium model of ResuVL, three models that read CV page images into JSON: ResuVL-S (0.26B parameters), ResuVL-M (0.51B) and ResuVL-L (0.87B), from the tiny-resume-parser project.

It reads one CV page image and writes its content as JSON (name, contact details, work, education, skills, languages, projects and more; schema in schema.py). Fine-tuned from SmolVLM-500M (HuggingFaceTB/SmolVLM-500M-Instruct), 0.51B parameters, every weight trained; the released model is the average of the weights of 3 fine-tuned runs. Code, training recipe and full evaluation: https://github.com/iamkucuk/tiny-resume-parser.

Use

pip install git+https://github.com/iamkucuk/tiny-resume-parser
tiny-resume-parser parse cv.pdf --model furkankucuk/ResuVL-M

PDF pages are rendered at 120 dpi and read one page at a time; the PDF text layer is not used. The command applies the settings the model was trained with: 30 image tiles (longest edge 3,072 px). --max-new-tokens 3000 is the default of parse; its answers are about 20 % longer than InternVL3-1B's. A CPU reads one page in about 68 seconds (Apple M2 Max, float32).

Results

Field F1 compares each (field, value) pair of the answer with a human-reviewed label. Lenient ignores case, spacing and punctuation; content also accepts correct text placed under another field of the same section.

Score
Test, 204 reviewed pages, lenient field F1 0.681 (0.682 repaired)
Test, strict field F1 0.670
Test, content F1 0.791
Test pages with no parseable answer 4 of 204
Development lenient F1, 50 reviewed / 79 validation pages 0.644 / 0.676
Development content F1 0.813 / 0.797

The labelling model itself, run a second time on 50 reviewed pages, scores 0.912 lenient field F1 against them; its run-to-run variation limits what models trained on its labels can reach. Test scores are with transformers 5.5.4. Definitions: evaluation.md.

Training data

1,393 CV page images from the Cv Parsing Dataset (invoiceModelisation, Roboflow Universe, CC BY 4.0), labelled by GLM-5.3-Flash. Mostly French and English CVs. Recipe: training.md.

Limits of the training data

The labels come from a model that was not made for French. Every label was written by GLM-5.3-Flash, whose model card lists English and Chinese as its languages, while 80 % of the CVs are French. Its errors on French text become part of the training labels, and the students learn them. The 254 test and development pages were reviewed by hand starting from those labels, and the review changed fewer than 1 % of values, so the test measures agreement with reviewed model labels, not with labels written independently by people. Run a second time, the labelling model scores 0.912 against the reviewed labels, which limits what models trained on its labels can reach.

English-trained base models, a small and narrow sample of French. The base models learned to read mostly on English text. SmolVLM-500M and granite-docling-258M list English as their only language; InternVL3-1B is listed as multilingual and Qwen3.5-0.8B as covering 201 languages and dialects, but neither model card gives a share per language, and French is likely a small part of their training data next to English. The training set here gives about 330,000 words of French from 1,116 CV pages, and it is narrow French: names, job titles, school names, dates and short skill lists, with half of all values one word long and few full sentences. Fine-tuning therefore asks models that read English well to learn to read French from a small and narrow sample, which covers little of French spelling, accents and vocabulary, while long training on it may weaken the English reading they started with. This makes training harder; how much of the remaining error it causes has not been measured.

Intended use and limits

For drafting a structured record of a CV page, to be checked by a person or by an applicant-tracking system. Not for ranking or rejecting candidates: the model leaves out values and misreads some, and its output must not decide anything about a person without review. One page at a time; other languages, scripts and very unusual layouts are untested; text written on the page is read like any other text.

Licence

The fine-tuned weights are licensed CC BY-NC 4.0: free for research and open-source use, not for commercial use. They were made by changing every weight of SmolVLM-500M through fine-tuning. SmolVLM-500M is licensed Apache 2.0; the licence texts are in LICENSE-base-model.txt and applies to the parts that come from it.

Citation

@software{kucuk2026tinyresumeparser,
  author = {Kucuk, Furkan},
  title  = {tiny-resume-parser: small vision-language models that read CV page images into JSON},
  year   = {2026},
  url    = {https://github.com/iamkucuk/tiny-resume-parser}
}
Downloads last month
-
Safetensors
Model size
0.5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for furkankucuk/ResuVL-M