How We Put AI to Work in Accounting and What Came of It
OpenAI
Alexandra Tsareva from Infosystems Jet describes building an on-prem LLM and OCR pipeline to extract structured data from Russian payment invoices into 1C. The solution handles a messy variety of document formats, applies validation rules, and has been running in production for six months with 100% accuracy on a test set.
The project started when accountants asked the ML team to teach AI to read invoices, which came in chaotic formats: old Excel files, documents with CID fonts, Word tables, multi-page PDFs, and even photos. The team chose an on-prem LLM to keep commercially sensitive data inside the company and used OCR (PaddleOCR) for scans and images. A preprocessing step converts all inputs to Markdown, preserving structure, and then the LLM extracts fields into a JSON contract that integrates with 1C. Hard validation checks follow: formal checks for field types and lengths, plus subject-specific rules for Russian bank details like BIK, correspondent account, KPP, and INN checksums. The team initially used qwen3-thinking-30b-a3b but switched to openai/gpt-oss-120b for production, encountering a bug where the model treated account numbers as numbers and dropped leading zeros. The pipeline achieved 100% accuracy on the test set, and after six months in production it has reduced manual work and sped up invoice processing, with plans to handle more document types.
- Abbreviations
- LLM = Large Language Model — большая языковая модель
- OCR = Optical Character Recognition — оптическое распознавание символов
- JSON = JavaScript Object Notation — формат обмена данными
- API = Application Programming Interface — программный интерфейс приложения
- PDF = Portable Document Format — формат переносимых документов
- BIK = Bank Identification Code — банковский идентификационный код
- KPP = Tax Registration Reason Code — код причины постановки на учёт
- INN = Individual Taxpayer Number — идентификационный номер налогоплательщика
Source: Habr — хаб ИИ —
original
