Image-to-Text
Transformers
PyTorch
English
mplug_owl2
feature-extraction
image-quality-assessment
document-quality
mplug-owl2
vision-language
document-analysis
IQA
custom_code
Instructions to use mapo80/DeQA-Doc-Overall with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use mapo80/DeQA-Doc-Overall with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "image-to-text" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # 'pip install "transformers<5.0.0' from transformers import pipeline pipe = pipeline("image-to-text", model="mapo80/DeQA-Doc-Overall", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("mapo80/DeQA-Doc-Overall", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
| license: apache-2.0 | |
| language: | |
| - en | |
| tags: | |
| - image-quality-assessment | |
| - document-quality | |
| - mplug-owl2 | |
| - vision-language | |
| - document-analysis | |
| - IQA | |
| pipeline_tag: image-to-text | |
| library_name: transformers | |
| # DeQA-Doc-Overall: Document Image Quality Assessment | |
| **DeQA-Doc-Overall** is a vision-language model for assessing the **overall quality** of document images. It provides a quality score from 1 (bad) to 5 (excellent) that reflects the general visual quality of scanned or photographed documents. | |
| ## Model Family | |
| This model is part of the **DeQA-Doc** family, which includes three specialized models: | |
| | Model | Description | HuggingFace | | |
| |-------|-------------|-------------| | |
| | **DeQA-Doc-Overall** | Overall document quality (this model) | [mapo80/DeQA-Doc-Overall](https://huggingface.co/mapo80/DeQA-Doc-Overall) | | |
| | **DeQA-Doc-Color** | Color quality assessment | [mapo80/DeQA-Doc-Color](https://huggingface.co/mapo80/DeQA-Doc-Color) | | |
| | **DeQA-Doc-Sharpness** | Sharpness/clarity assessment | [mapo80/DeQA-Doc-Sharpness](https://huggingface.co/mapo80/DeQA-Doc-Sharpness) | | |
| ## Quick Start | |
| ```python | |
| import torch | |
| from transformers import AutoModelForCausalLM | |
| from PIL import Image | |
| # Load the model | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "mapo80/DeQA-Doc-Overall", | |
| trust_remote_code=True, | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| ) | |
| # Score an image | |
| image = Image.open("document.jpg").convert("RGB") | |
| score = model.score([image]) | |
| print(f"Overall Quality Score: {score.item():.2f} / 5.0") | |
| ``` | |
| ## Batch Processing | |
| You can score multiple images at once: | |
| ```python | |
| images = [ | |
| Image.open("doc1.jpg").convert("RGB"), | |
| Image.open("doc2.jpg").convert("RGB"), | |
| Image.open("doc3.jpg").convert("RGB"), | |
| ] | |
| scores = model.score(images) | |
| for i, score in enumerate(scores): | |
| print(f"Document {i+1}: {score.item():.2f} / 5.0") | |
| ``` | |
| ## Score Interpretation | |
| | Score Range | Quality Level | Description | | |
| |-------------|---------------|-------------| | |
| | 4.5 - 5.0 | **Excellent** | Perfect quality, no visible defects | | |
| | 3.5 - 4.5 | **Good** | Minor imperfections, highly readable | | |
| | 2.5 - 3.5 | **Fair** | Noticeable issues but still usable | | |
| | 1.5 - 2.5 | **Poor** | Significant quality problems | | |
| | 1.0 - 1.5 | **Bad** | Severe degradation, hard to read | | |
| ## Model Architecture | |
| - **Base Model**: mPLUG-Owl2 (LLaMA2-7B + ViT-L Vision Encoder) | |
| - **Vision Encoder**: CLIP ViT-L/14 (1024 visual tokens via Visual Abstractor) | |
| - **Language Model**: LLaMA2-7B | |
| - **Training**: Full fine-tuning on document quality datasets | |
| - **Input Resolution**: Images are resized to 448x448 (with aspect ratio preservation) | |
| ## Technical Details | |
| | Property | Value | | |
| |----------|-------| | |
| | Model Size | ~16 GB (float16) | | |
| | Parameters | ~7.2B | | |
| | Input | RGB images (any resolution) | | |
| | Output | Quality score (1.0 - 5.0) | | |
| | Inference | ~2-3 seconds per image on A100 | | |
| ## Hardware Requirements | |
| | Setup | VRAM Required | Recommended | | |
| |-------|---------------|-------------| | |
| | Full precision (fp32) | ~32 GB | A100, H100 | | |
| | Half precision (fp16) | ~16 GB | A100, A40, RTX 4090 | | |
| | With CPU offload | ~8 GB GPU + RAM | RTX 3090, RTX 4080 | | |
| ### GPU Inference (Recommended) | |
| ```python | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "mapo80/DeQA-Doc-Overall", | |
| trust_remote_code=True, | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| ) | |
| ``` | |
| ### CPU Offload (Lower VRAM) | |
| ```python | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "mapo80/DeQA-Doc-Overall", | |
| trust_remote_code=True, | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| offload_folder="/tmp/offload", | |
| ) | |
| ``` | |
| ## Installation | |
| ```bash | |
| pip install torch transformers accelerate pillow sentencepiece protobuf | |
| ``` | |
| **Note**: Use `transformers>=4.36.0` for best compatibility. | |
| ## Use Cases | |
| - **Document Scanning QA**: Automatically flag low-quality scans for re-scanning | |
| - **Archive Digitization**: Prioritize documents needing restoration | |
| - **OCR Preprocessing**: Filter images likely to produce poor OCR results | |
| - **Document Management**: Sort and categorize documents by quality | |
| - **Quality Control**: Automated quality checks in document processing pipelines | |
| ## Example: Quality-Based Filtering | |
| ```python | |
| import torch | |
| from transformers import AutoModelForCausalLM | |
| from PIL import Image | |
| from pathlib import Path | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "mapo80/DeQA-Doc-Overall", | |
| trust_remote_code=True, | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| ) | |
| # Filter documents by quality | |
| def filter_by_quality(image_paths, min_score=3.0): | |
| good_docs = [] | |
| bad_docs = [] | |
| for path in image_paths: | |
| img = Image.open(path).convert("RGB") | |
| score = model.score([img]).item() | |
| if score >= min_score: | |
| good_docs.append((path, score)) | |
| else: | |
| bad_docs.append((path, score)) | |
| return good_docs, bad_docs | |
| # Usage | |
| docs = list(Path("documents/").glob("*.jpg")) | |
| good, bad = filter_by_quality(docs, min_score=3.5) | |
| print(f"Good quality: {len(good)} documents") | |
| print(f"Need review: {len(bad)} documents") | |
| ``` | |
| ## Limitations | |
| - Optimized for document images (forms, letters, reports, etc.) | |
| - May not perform well on natural photos or artistic images | |
| - Requires GPU with sufficient VRAM for efficient inference | |
| - Score is subjective and based on training data distribution | |
| ## Credits & Attribution | |
| This model is based on the **DeQA-Doc** project by Junjie Gao et al., which won the **Championship** in the VQualA 2025 DIQA (Document Image Quality Assessment) Challenge. | |
| **Original Repository**: [https://github.com/Junjie-Gao19/DeQA-Doc](https://github.com/Junjie-Gao19/DeQA-Doc) | |
| All credit for the research, training methodology, and model architecture goes to the original authors. | |
| ## Citation | |
| If you use this model in your research, please cite the original paper: | |
| ```bibtex | |
| @inproceedings{deqadoc, | |
| title={{DeQA-Doc}: Adapting {DeQA-Score} to Document Image Quality Assessment}, | |
| author={Gao, Junjie and Liu, Runze and Peng, Yingzhe and Yang, Shujian and Zhang, Jin and Yang, Kai and You, Zhiyuan}, | |
| booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision Workshop}, | |
| year={2025}, | |
| } | |
| ``` | |
| **ArXiv**: [https://arxiv.org/abs/2507.12796](https://arxiv.org/abs/2507.12796) | |
| ## License | |
| Apache 2.0 | |
| ## Related Models | |
| - [DeQA-Doc-Color](https://huggingface.co/mapo80/DeQA-Doc-Color) - Color quality assessment | |
| - [DeQA-Doc-Sharpness](https://huggingface.co/mapo80/DeQA-Doc-Sharpness) - Sharpness assessment | |