AI classification of incoming documents: implementation and tuning

Implementing AI classification of incoming documents by type

AI Development Areas

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_logo-advance_0.webp
    B2B Advance company logo design
    696
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    983
  • image_logo-aider_0.webp
    AIDER company logo development
    919
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1033

Implementing AI classification of incoming documents by type

The incoming correspondence department processes 500+ documents per day. Employees manually determine the type — whether it's an invoice or a contract — and then enter it into the system. Errors occur in 15% of cases, each document takes 3–5 minutes. We know this pain, so we build automatic classifiers that work with 97–99% accuracy and save up to 80% of time on routine routing. For example, for a large logistics operator, we implemented a classifier that processes 2000+ documents daily with 98.5% accuracy, completely replacing manual sorting.

Key problems solved by AI classification

Low accuracy for similar documents

An invoice and a waybill often have identical fields and structure. A text classifier will err in 5–10% of cases. A multimodal approach — text + tables + file metadata — reduces error to 1–3%.

Unknown types

A system without the UNKNOWN class sends an unfamiliar document to the nearest category with low confidence. This disrupts business processes. We allocate a separate class for manual processing and log all cases for retraining.

Integration with existing ECM/ERP

API layer based on FastAPI or GraphQL, support for REST, SOAP, gRPC. The classifier can be easily embedded into the processing pipeline — from scanning to loading into 1C, SAP, or DocuWare.

How the multimodal classifier works

Our stack: PyTorch, HuggingFace Transformers, LangChain for chains, ChromaDB or Qdrant for storing embeddings. Models — rubert-tiny2 for Russian or multilingual-e5-large for multilingual document flow. Deployment via Triton Inference Server with INT8 quantization support — p99 latency < 100 ms.

def classify_document(file_path: str) -> DocumentClass: features = {} # Text features text = extract_text(file_path) features["text_class"] = text_classifier.predict(text[:2000]) # Structural features features["has_tables"] = detect_tables(file_path) features["page_count"] = get_page_count(file_path) features["filename_hint"] = extract_filename_hint(file_path) # Document metadata features["creation_date"] = get_document_metadata(file_path).get("created") # Ensemble decision return ensemble_classifier.predict(features) 

Case study: classifying 500K documents per month

A large retailer (our client) implemented a processing system for waybills and acts. Before implementation — 4 employees on manual sorting, 85% accuracy. After — an AI classifier based on RuBERT fine-tuned on 20K labeled documents. Accuracy: 98.5% for waybills, 97.2% for acts. Processing time per document — 0.7 s. Result: 3 out of 4 employees were reassigned to quality control, the cost of processing one document decreased by tens of times.

Why multimodal approach is better

Criteria Text only Multimodal (text + structure + metadata)
Accuracy on similar documents 85–90% 96–99%
Robustness to low-quality scans Low High (uses layout features)
Processing speed < 50 ms 150–300 ms (due to table and metadata analysis)
Retrainability BERT fine-tuning Ensemble fine-tuning

The multimodal approach is 3 times more accurate than pure-text on documents with similar structure.

Why invest in model fine-tuning?

Fine-tuning on your data boosts accuracy by 5–10% compared to an out-of-the-box model. For a client handling 1000 documents per day, the savings from reduced rework cover the fine-tuning cost within the first month.

Implementation process

Stage Duration Result
Analytics 5–10 days Taxonomy, document statistics, integration requirements
Design 3–5 days Pipeline architecture, model selection, MVP specification
Implementation 15–30 days Classifier model, API layer, integration tests
Testing 7–14 days Validation on real data, A/B test with current process
Deployment and support 3–7 days Deployment on your server or cloud, documentation

What's included in the result

  • Ready classifier model (fine-tuned for your taxonomy)
  • API for integration (OpenAPI specification)
  • Docker images for deployment (CPU/GPU)
  • Operation manual and operator training
  • Guaranteed accuracy of at least 95% on the test set
  • 3 months of post-launch support

Typical mistakes in self-implementation

  • Ignoring layout features. A simple BERT classifier confuses an invoice and a payment order if the texts are similar. Add table embeddings and page counts — accuracy will increase by 10–15%.
  • Missing the UNKNOWN class. Always provide a fallback for unknown types. Without it, a classification error breaks the processing chain.
  • Insufficient labeled data. Fine-tuning requires at least 200–500 examples per class. Less leads to high variance, more is better.

Timeline and budget

Implementation timeline — from 4 to 12 weeks depending on taxonomy complexity and integration. The budget is calculated individually after analyzing the document flow. Contact us — we will evaluate your project and propose a scenario with a guaranteed result. Request a consultation to get savings of up to 80% of time on manual sorting.

Experience: 10+ years in AI/ML, 80+ document classification projects, certified specialists in PyTorch and HuggingFace.