How to use from the
Use from the
Transformers library
# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline("text-classification", model="FahrenheitResearch/FR-Docs-v1")
# Load model directly
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("FahrenheitResearch/FR-Docs-v1")
model = AutoModelForSequenceClassification.from_pretrained("FahrenheitResearch/FR-Docs-v1")
Quick Links

FR-Docs-v1

Document type recognition, classification, and sensitive-content detection. FR-Docs identifies uploaded documents (Word, PDF, text), classifies them into 30 business categories across 8 groups, flags sensitive spans for redaction, and returns an LLM routing suggestion, so downstream systems can assign each document to the most suitable model automatically.

Built by Neural Arc Inc. as the document intelligence layer for the Helium AI workspace.

What is in this repo

  • Fine-tuned DistilBERT classifier (67M parameters): 31 labels (30 categories plus other), trained with the Hugging Face Trainer.
  • pipeline/ folder: the full FR-Docs pipeline source, including format detection and text extraction (PyMuPDF, python-docx), scanned-PDF detection, a three-layer sensitive-content scanner (regex, gazetteer, zero-shot GLiNER), redaction helpers, a FastAPI service with a browser tester UI, and training scripts for retraining or upgrading the base model.

Categories

Legal: contract, nda, court_filing, patent, compliance_filing. Financial: invoice, receipt, purchase_order, financial_statement, tax_document, insurance_document. HR: cv_resume, offer_letter, policy_document. Product: product_spec, datasheet, user_manual. Sales and Marketing: proposal, case_study, press_release, marketing_collateral. Operations: sop, report, meeting_minutes, form, presentation. Correspondence: email_thread, letter, memo. Technical: research_paper. Fallback: other.

Usage

Classification only:

from transformers import pipeline

clf = pipeline("text-classification", model="FahrenheitResearch/FR-Docs-v1")
print(clf("INVOICE #INV-2026-0142 ... TOTAL DUE: $27,435. Payment terms: Net 30."))
# [{'label': 'invoice', 'score': ...}]

Full pipeline (extraction, classification, sensitive-span detection, routing):

hf download FahrenheitResearch/FR-Docs-v1 --include "pipeline/*" --local-dir fr-docs
cd fr-docs/pipeline
pip install -r requirements.txt
FR_DOCS_SENSITIVITY=strict uvicorn fr_docs.api:app --port 8080
# open http://localhost:8080 for the drag-and-drop tester

Sensitive-content detection

Three stacked detectors return character-offset spans for redaction: regex (emails, phones, credit cards with Luhn validation, SSN, PAN, Aadhaar, GSTIN, IBAN, passports, vehicle registrations, IPs, URLs, money amounts, salaries, account numbers, dates of birth, equity stakes), a gazetteer of organization-specific brand, product, and client names (editable YAML, no retraining), and optional zero-shot NER via GLiNER for person names, companies, and addresses. A strict profile additionally flags all dates, standalone number sequences, and reference IDs.

Training and limitations

v1 was trained on a fully synthetic templated corpus (7,750 documents, 250 per class). It performs well on clearly structured business documents but has not yet been trained on real-world data; expect degraded accuracy on unusual layouts, informal writing, and domains far from the templates. Scanned documents without a text layer are detected and deferred rather than classified. The training scripts in pipeline/training/ support retraining on your own labeled JSONL with any Hugging Face base model, including ModernBERT for long documents.

License

Apache 2.0.

Downloads last month
12
Safetensors
Model size
67M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for FahrenheitResearch/FR-Docs-v1

Finetuned
(11983)
this model
Quantizations
1 model