WeVisDoc

English | 简体中文

GitHub Project Page WeVisDoc-4B WeVisDoc-2B Technical Report

WeVisDoc is an end-to-end document parser for page images. Fine-tuned from Qwen3-VL-2B-Instruct and Qwen3-VL-4B-Instruct, it turns a page into structured Markdown, with LaTeX formulas and HTML tables.

WeVisDoc-4B achieves an Overall score of 95.38 on OmniDocBench v1.6 and a mean Overall score of 75.54 across the three PureDocBench tracks, ranking first among the compared end-to-end parsers in all four settings.

WeVisDoc-4B leads the compared end-to-end parsers across all four reported settings.

WeVisDoc-4B leads the compared end-to-end parsers across all four reported settings. Bars show scores on OmniDocBench v1.6 and PureDocBench Clean, Digital, and Real.

Evaluation

The following tables include end-to-end document parsing specialists only. WeVisDoc results are means over three inference runs.

OmniDocBench v1.6

Model Params Overall ↑ TextEdit ↓ FormulaCDM ↑ TableTEDS ↑ TableTEDS_S ↑ ROEdit ↓
Nanonets-OCR2* 3B 83.20 0.108 80.35 80.10 85.26 0.211
OCRFlux-3B* 3B 83.31 0.126 88.75 73.78 77.98 0.217
POINTS-Reader 3B 83.37 0.096 85.72 73.98 77.40 0.198
Nanonets-OCR-s 3B 83.61 0.108 81.46 80.18 84.51 0.213
olmOCR-2-7B* 7B 85.51 0.106 88.84 78.32 82.81 0.223
olmOCR 7B 85.74 0.139 88.10 83.00 87.17 0.216
DeepSeek-OCR* 3B 86.31 0.077 84.71 81.87 86.07 0.171
OCRVerse 4B 88.60 0.063 89.61 82.44 86.27 0.163
UniRec-0.1B* 0.1B 88.91 0.088 92.14 83.40 86.79 0.146
DeepSeek-OCR 2 3B 90.25 0.050 91.84 83.89 87.75 0.144
dots.ocr 3B 90.77 0.048 89.95 87.18 90.58 0.138
FD-RL* 4B 91.21 0.055 92.92 86.22 90.92 0.145
HunyuanOCR 1B 92.03 0.048 88.60 92.37 93.99 0.138
dots.mocr* 3B 92.57 0.042 92.09 89.78 92.92 0.133
FireRed-OCR 2B 93.26 0.037 95.44 88.04 91.06 0.131
Logics-Parsing-v2 4B 93.33 0.041 95.65 88.42 91.98 0.137
Qianfan-OCR 4B 93.90 0.040 95.08 90.53 93.31 0.130
Unlimited-OCR 3B-A0.5B 93.92 0.042 95.79 90.16 93.32 0.129
HunyuanOCR-1.5 1B 94.74 0.039 94.50 93.67 94.71 0.129
WeVisDoc-2B 2B 95.06 0.038 95.94 93.03 95.26 0.130
WeVisDoc-4B 4B 95.38 0.036 96.81 92.95 95.34 0.125

PureDocBench

Model Params Avg₃ ↑ Clean Overall ↑ Digital Degraded Overall ↑ Real Degraded Overall ↑
OCRFlux-3B 3B 42.06 47.14 41.82 37.21
DeepSeek-OCR 3B 46.98 53.50 46.95 40.48
UniRec-0.1B 0.1B 48.59 58.91 52.42 34.44
POINTS-Reader* 3B 49.24 53.78 51.24 42.69
DeepSeek-OCR-2 3B 49.51 55.53 49.41 43.60
Qianfan-OCR 4B 51.04 57.22 50.85 45.06
olmOCR-7B 7B 55.90 62.56 57.84 47.30
Nanonets-OCR2 3B 58.36 64.83 61.23 49.03
HunyuanOCR 1B 60.56 65.61 61.49 54.58
Unlimited-OCR* 3B-A0.5B 62.76 71.28 63.62 53.39
olmOCR-2-7B 7B 63.78 69.36 65.87 56.10
dots.ocr 3B 64.55 72.01 65.95 55.68
Nanonets-OCR-s* 3B 65.37 71.26 66.56 58.28
FireRed-OCR 2B 65.57 70.81 68.49 57.42
HunyuanOCR-1.5* 1B 68.79 73.98 70.81 61.59
OCRVerse 4B 69.40 73.18 71.36 63.66
dots.mocr 3B 70.39 76.27 73.16 61.73
Logics-Parsing-v2 4B 72.61 76.35 73.85 67.64
FD-RL 4B 73.92 78.38 76.33 67.04
WeVisDoc-2B 2B 73.86 79.36 76.62 65.60
WeVisDoc-4B 4B 75.54 79.81 77.74 69.08

Avg₃ is the mean of the three PureDocBench track-level Overall scores. * marks baseline results obtained with our evaluation pipeline; unmarked baseline results are taken from the corresponding papers.

Quick start

Python 3.10+ is required. Install the vLLM and client dependencies:

python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-vllm.txt

Start the service in the first terminal:

bash scripts/serve_vllm.sh Tencent/WeVisDoc-2B

Use Tencent/WeVisDoc-4B instead to run the 4B version.

Then process all bundled images from a second terminal:

source .venv/bin/activate
bash scripts/run_demo.sh

Predictions are written to outputs/predictions/.

Serve with vLLM

python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-vllm.txt
bash scripts/serve_vllm.sh Tencent/WeVisDoc-2B

Replace the model ID with Tencent/WeVisDoc-4B to serve the 4B version. The launcher requires vLLM >=0.11.1. Extra arguments are passed to vLLM. To expose the service on the network, set HOST=0.0.0.0. For two GPUs and a larger context:

CUDA_VISIBLE_DEVICES=0,1 TENSOR_PARALLEL_SIZE=2 MAX_MODEL_LEN=65536 \
  bash scripts/serve_vllm.sh Tencent/WeVisDoc-4B --dtype bfloat16
curl --fail http://127.0.0.1:8000/health
Environment variable Default Meaning
WEVISDOC_MODEL_PATH / MODEL_PATH Unset Model ID or checkpoint; positional argument takes precedence, then WEVISDOC_MODEL_PATH
SERVED_MODEL_NAME wevisdoc API model alias; also read by the client
HOST / PORT 127.0.0.1 / 8000 Listening address
TENSOR_PARALLEL_SIZE 1 Number of tensor-parallel GPUs
MAX_MODEL_LEN 32768 Total context budget: text, image and output tokens
GPU_MEMORY_UTILIZATION 0.9 GPU memory fraction
MAX_NUM_SEQS 8 Maximum concurrent sequences
OMP_NUM_THREADS 1 CPU preprocessing threads
VLLM_API_KEY Unset Optional server authentication, handled by vLLM

Use a separate virtual environment from Transformers to avoid conflicting PyTorch packages.

Call the service

A client machine only needs python -m pip install -r requirements.txt. The examples expect PNG, JPEG, or WebP page images:

python -m wevisdoc.client --image page.png --output results/page.md
python -m wevisdoc.client --image-dir images --result-dir results --workers 4

--image-dir processes images in that directory (not recursively) and writes one Markdown file per image, such as results/page.png.md. Existing nonempty results are skipped unless --overwrite is set.

To process every bundled image in demos/inputs/:

OPENAI_BASE_URL=http://127.0.0.1:8000/v1 \
  bash scripts/run_demo.sh --workers 4

The demo writes one Markdown file per image to outputs/predictions/.

The client reads OPENAI_BASE_URL (default http://127.0.0.1:8000/v1), OPENAI_API_KEY (default EMPTY), and SERVED_MODEL_NAME. Match OPENAI_API_KEY to VLLM_API_KEY when authentication is enabled.

Override defaults with --base-url, --model, --timeout (600 seconds), --temperature (0), or --max-tokens (8192). Increase the token or context budget if output is truncated; reduce image size, context, or concurrency if GPU memory is insufficient.

Local Transformers inference

Use a separate environment from vLLM:

python -m pip install -r requirements-local.txt
python -m wevisdoc.local --model Tencent/WeVisDoc-2B \
  --image page.png --output results/page.md

Use Tencent/WeVisDoc-4B for the 4B version. --model can be omitted when WEVISDOC_MODEL_PATH is set. Local inference supports --device-map (default auto) and --max-tokens (8192). Render PDFs to page images first.

Downloads last month
-
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including tencent/WeVisDoc-4B