How the archive works
The archive takes scanned accounting documents, reads them, links them to deals in 1C, keeps the originals safe, and helps you answer document requests and review contracts. This page explains every screen and every rule the system applies, so that nothing it decides is a surprise.
Signing in
Dashboard
Documents
Review queue
Stamps & signatures
Power of attorney rule
Registry
What "fake" means here
Requests
Contracts
Adding documents
Admin
Glossary
Signing in
The archive has no passwords; every call carries an API key. Paste yours into the field at the top right and press Connect. The key stays in this browser only. A link of the form /ui?key=… logs a browser in with one click and removes the key from the address bar immediately.
| Role | May |
|---|---|
service | Read, search, download, submit documents — what 1C uses |
reviewer | The above, plus edit fields, delete, decide matches, analyse stamps, attach a POA, work requests and contracts |
admin | Everything, plus bulk processing, purging, the 1C deal registry, retiring templates |
On the Mac the keys are stored in the login Keychain (service docarchive), not in a file. ./run.sh keychain list shows what is set; ./run.sh keychain set DA_API_KEYS changes it; the containers receive the keys when started through ./run.sh.
Dashboard
Counts, breakdowns by status, type and company, a 30-day ingest timeline, top counterparties and an extraction-confidence split. Every tile and every bar is a filter — click it and you land in Documents with that filter applied.
Documents
Full-text search (Russian and English are stemmed), filters by 1C deal or dealer, company, status, type, seal/POA compliance and date range. Cards show page thumbnails; Table is a dense grid. Click a row to open the document.
Inside a document
- Scanned copy — the page images with page navigation. Detected stamps (red) and signatures (green) are drawn over the scan; each box shows what the registry thinks it is.
- Extracted metadata — every field is tagged with where it came from:
rules(regular expressions),ai(the vision model),rules+ai(both agree, the strongest signal),ai:disputed(they disagree — the document is sent to review). - Open / Download — the archival PDF (compressed, with a text layer) or the untouched original.
- Edit fields — correct any value. A reason is required; the old and new values go into the audit log. A later re-extraction never overwrites what a person corrected.
- Reindex — re-run 1C matching, optionally re-extract from the stored OCR text (how a corrected rule set reaches old documents without re-scanning).
- Delete — hides the record but keeps it; it can be restored from Admin. A purge (admin) also destroys the stored files. A legal hold blocks both.
- 1C matching — every candidate deal with its score and the reasons. Attach / Detach set the link by hand.
Statuses
| Status | Meaning |
|---|---|
archived | Stored and linked to a 1C deal with confidence |
needs_review | Stored, but the 1C link or the extraction was not confident enough to accept automatically — never silently attached |
quarantined | Encrypted, corrupt or unsafe input; a person must look |
failed | Processing failed after retries; the error report is in failed/ |
duplicate | Identical bytes were already archived (checked by SHA-256) |
Review queue
Everything the system refused to decide on its own, with the reason: an uncertain 1C match, conflicting values, a missing power of attorney, a seal it could not confirm, a contract routed to legal. Claim it, then Resolve or Reject with a note. Rejecting a scan quarantines it.
Stamps & signatures
Two detectors work together. A colour-based locator finds blue and violet ink — that is what seals and pen signatures are made of — and proposes candidates. A local vision model (Gemma 3, running on this Mac's GPU) looks at each crop and says whether it is a stamp, a signature or something else, and reads the text ring of a seal. Only what both agree on is trusted; a candidate the model calls "other" (a barcode, a table line) is dropped.
A printed Электронная подпись notice is an electronic signature: legally a signature, but it leaves no ink to detect. The archive reads it from the text.
Press Analyse stamps & signatures on a document to run this. Every mark can be confirmed or rejected (Not a stamp) by a reviewer; a person's call outranks both detectors, and the compliance verdict is recomputed at once.
The power-of-attorney rule
| What was found | Verdict |
|---|---|
| Seal present and confirmed by the model (or identified in the registry as a party's seal) | ok — no POA needed |
| Signature, no seal, no POA attached | POA required — a review item is opened |
| Signature, no seal, POA attached | ok |
| Qualified electronic signature | ok — stands on its own |
| Seal seen only by colour detection, unconfirmed | review — a seal waives the POA, so it is not accepted unverified |
| Seal belongs to an organisation that is not a party to the document | review — the wrong seal |
| Seal identified, but its structure differs from the registered impression | review — looks redrawn |
| Nothing found at all | review |
| Contracts, requests, reply packages | exempt — not subject to the rule |
To attach a POA, press Attach power of attorney in the document and either point at a POA scan already in the archive or record its number and date. The rules and thresholds live in config/compliance_rules.yaml; the version that decided each document is stored with it.
Registry of known stamps and signatures
The registry is the archive's dictionary of seals and signatures it has seen before. Each entry (a template) has a canonical image, a search vector, an owner (the organisation's ИНН, or a person), a name and a history of the impressions it was learned from.
- Identified — the mark matches a registered template at ≥ 88 %. Its owner is checked against the document's parties. No model call is needed.
- Probably — 75–88 %: the template is suggested; confirm with Same or reject with Different.
- Unknown — nothing close. Press New template… to register it, or leave it and use Propose from confirmed marks on the Registry tab, which groups confirmed impressions into proposed templates for you to name.
Auto-acceptance: a stamp is confirmed without a person only when it is identified, its owner is a party to the document, the template has at least 5 human-confirmed impressions, its structure matches, and no pasted-image cue fired. Templates can be retired (admin) when a seal is re-cut; the old one is kept for history. Naming is owner-first: 7715589370/stamp/main-round.
What "fake" means here
| Suspicion | What was seen | Reliability |
|---|---|---|
| Wrong owner | The seal is identified in the registry, but it belongs to an organisation that is neither the seller nor the counterparty on this document. The most common real-world misuse is not a forged seal — it is the wrong seal: a subsidiary's, a former entity's, one that should not be on that paper. | High — two ИНН values compared, no model involved |
| Pasted image | The impression is a pixel-identical copy of another impression in the archive (a real inked seal never repeats exactly), or its JPEG compression error and ink colour differ from the rest of the page in a way consistent with an image inserted before scanning or into the PDF. | High when two cues agree; the pixel-duplicate cue is decisive on its own |
| Structural drift | The seal resembles a registered one closely enough to be identified, but after alignment its rim-text spacing, diameter or ink density differ — what a redrawn or re-typeset seal looks like. | Good for stamps; indicative for signatures |
| Signature drift | A signature under a printed name whose registered signature looks different. | Indicative only. Offline signature verification from a 300 dpi scan is an unsolved problem; the archive says "does not resemble the ones on file", never "forged". |
Every suspicion shows the evidence (the two images side by side, the cues that fired) so that a reviewer can agree or overrule it in one click.
Requests for documents
A требование from the tax authority (ст. 93 / 93.1 НК РФ), a bank's request under 115-ФЗ, an auditor's or a counterparty's letter: an issuer, a number, a legal basis, a deadline in working days, and an itemised list of what is wanted.
- Upload & read. The scan is OCR'd; the local model reads it into a checklist (issuer, №, date, basis, items with document types, numbers, periods and counterparties). The deadline is computed from the receipt date with the RF production calendar (weekends and holidays skipped).
- Documents. Each item is matched against the archive by counterparty ИНН, type, period and number; companions are pulled in (the ТТН that travels with a УПД). Confident matches are pre-accepted. Accept, drop, attach another document, or mark an item Not in archive with a reason that flows into the letter. The seal/POA badge is shown on every proposed document — do not hand an inspector something flagged.
- Letter. The header, addressee, reference and the опись (numbered list of copies with page counts) are generated from the checklist; the explanatory paragraph is drafted by the model and is yours to edit.
- Package. One page-numbered PDF (letter → опись → copies) plus a ZIP of separate files for ТКС, and the letter as .docx. Then Mark as sent with the channel and date.
Nothing is sent automatically. The badge on the Requests tab counts requests overdue or due within five working days.
Contracts
Contracts are scanned and stored like every other document, then reviewed: the model reads the contract into a structure (parties with requisites, type, subject, price, VAT, payment, term, penalties, jurisdiction, which standard clauses are present, which risky clauses appear), and the rules in config/contract_rules.yaml decide what is missing or dangerous, cite the law, and route the contract.
Requisite checks (deterministic, no model)
- ИНН control digit (10 and 12 digits), КПП format, ОГРН control digit, БИК format;
- settlement and correspondent account control key against the БИК (Bank of Russia rule);
- the counterparty name against the name on file for that ИНН in the archive.
Essential terms and risks
For a supply contract the goods and quantity and the delivery term are essential (ст. 455, 465, 506 ГК РФ); for services the list of services (ст. 779); for a lease the identified object and, for real estate, the rent (ст. 607, 654). Risk clauses flagged: unilateral price change, one-sided or excessive penalties, foreign or counterparty-region jurisdiction, 100 % prepayment without security, automatic renewal, unlimited liability, no e-document clause, personal data without processing terms, unclear VAT. Each carries a severity, the law, and a suggested redline.
Routing
| Route | When |
|---|---|
| legal | Critical requisite errors, essential terms missing, or two or more risk clauses |
| director | Contract value ≥ 5 M ₽ |
| accounting | Major findings on requisites or VAT |
| ok | No findings — ready to sign |
The протокол разногласий is generated from the findings — one row per issue with the counterparty's wording, the proposed wording and the legal basis — and downloadable as .docx. Record what happened (negotiating, signed, active, closed) so the contract's state is tracked; contracts expiring within 45 days are listed.
Adding documents
- Process the scanned archive — queue scans from the source folders in batches; the worker processes them (OCR → extraction → 1C matching → archive). Resumable: nothing is queued twice. Originals are never modified; the folders are mounted read-only.
- Upload a scan — one file, run immediately.
- Add a record by hand — for a document that exists in 1C but whose scan is missing. It is marked
manualand can never be mistaken for something read off a scan.
Admin
Reindex replays extraction and matching over documents already stored, with filters — how a corrected rule set or a freshly synced 1C deal table reaches older records. Deleted records lists what was deleted and restores it.
Glossary
| УПД | Universal transfer document — an invoice and delivery act in one form |
| Счёт-фактура | VAT invoice |
| ТТН | Transport waybill accompanying a delivery |
| Доверенность (POA) | Power of attorney authorising a person to sign for an organisation |
| ИНН / КПП / ОГРН / БИК | Taxpayer number / tax registration code / state registration number / bank identifier code |
| Требование | A formal request for documents from the tax authority |
| Опись | The numbered inventory of enclosed copies in a reply |
| Протокол разногласий | A protocol of disagreements — the counter-proposal table sent back with a contract |
| ТКС | Telecommunication channels — the electronic filing route to the tax authority via an operator |
Как устроен архив
Архив принимает сканы первичных документов, распознаёт их, связывает со сделками в 1С, хранит оригиналы и помогает отвечать на требования о представлении документов и проверять договоры. Здесь объяснён каждый экран и каждое правило, по которому система принимает решения, — чтобы ни одно её решение не было неожиданностью.
Вход
Панель
Документы
Очередь проверки
Печати и подписи
Правило доверенности
Реестр печатей
Что здесь значит «подделка»
Требования
Договоры
Добавление документов
Администрирование
Словарь
Вход
В архиве нет паролей; каждый запрос несёт API-ключ. Вставьте свой ключ в поле справа вверху и нажмите Connect. Ключ хранится только в этом браузере. Ссылка вида /ui?key=… входит в систему одним кликом и сразу убирает ключ из адресной строки.
| Роль | Права |
|---|---|
service | Чтение, поиск, скачивание, отправка документов — так работает 1С |
reviewer | То же, плюс правка полей, удаление, решения по сопоставлению, анализ печатей, прикрепление доверенности, работа с требованиями и договорами |
admin | Всё, плюс пакетная обработка, безвозвратное удаление, реестр сделок 1С, вывод шаблонов из оборота |
На Mac ключи хранятся в Связке ключей (служба docarchive), а не в файле. ./run.sh keychain list показывает, что задано; ./run.sh keychain set DA_API_KEYS меняет; контейнеры получают ключи при запуске через ./run.sh.
Панель
Счётчики, разбивка по статусам, типам и компаниям, лента загрузок за 30 дней, основные контрагенты и распределение уверенности распознавания. Каждая плитка и каждая полоска — это фильтр: щёлкните, и вы попадёте в Документы с этим фильтром.
Документы
Полнотекстовый поиск (русский и английский с учётом словоформ), фильтры по сделке или дилеру 1С, компании, статусу, типу, соответствию по печати/доверенности и периоду. Карточки показывают миниатюры страниц; Таблица — плотная сетка. Щелчок по строке открывает документ.
Внутри документа
- Скан — изображения страниц с навигацией. Найденные печати (красным) и подписи (зелёным) наложены на скан; у каждой рамки подписано, чем её считает реестр.
- Извлечённые данные — у каждого поля указан источник:
rules(регулярные выражения),ai(модель зрения),rules+ai(совпали — самый сильный сигнал),ai:disputed(разошлись — документ уходит на проверку). - Открыть / Скачать — архивный PDF (сжатый, с текстовым слоем) или нетронутый оригинал.
- Править поля — исправить любое значение. Нужна причина; старое и новое значения попадают в журнал. Повторное распознавание никогда не перезаписывает то, что исправил человек.
- Переиндексировать — заново сопоставить с 1С, при желании заново извлечь данные из сохранённого текста OCR (так исправленные правила доходят до старых документов без пересканирования).
- Удалить — скрывает запись, но сохраняет её; восстановить можно в Администрировании. Безвозвратное удаление (админ) уничтожает и файлы. Юридическое удержание блокирует и то и другое.
- Сопоставление с 1С — все кандидаты-сделки с баллами и причинами. Привязать / Отвязать — вручную.
Статусы
| Статус | Значение |
|---|---|
archived | Сохранён и уверенно связан со сделкой 1С |
needs_review | Сохранён, но связь с 1С или распознавание недостаточно уверенны — документ никогда не привязывается молча |
quarantined | Зашифрованный, повреждённый или небезопасный файл; нужен человек |
failed | Обработка не удалась после повторов; отчёт об ошибке в failed/ |
duplicate | Такие же байты уже в архиве (проверка по SHA-256) |
Очередь проверки
Всё, что система отказалась решать сама, с указанием причины: неуверенное сопоставление с 1С, противоречивые значения, отсутствующая доверенность, неподтверждённая печать, договор, направленный юристу. Взять в работу, затем Решить или Отклонить с пометкой. Отклонение скана отправляет его в карантин.
Печати и подписи
Работают два детектора. Цветовой локатор находит синие и фиолетовые чернила — из них сделаны печати и подписи ручкой — и предлагает кандидатов. Локальная модель зрения (Gemma 3, работает на GPU этого Mac) смотрит на каждый фрагмент и говорит, печать это, подпись или что-то ещё, и читает текст по ободу печати. Доверие только тому, в чём оба согласны; кандидат, который модель назвала «иное» (штрихкод, линия таблицы), отбрасывается.
Напечатанная отметка «Электронная подпись» — это электронная подпись: юридически подпись, но чернил не оставляет. Архив читает её из текста.
Нажмите Analyse stamps & signatures в документе, чтобы запустить анализ. Каждую отметку проверяющий может подтвердить или отклонить (Not a stamp); решение человека важнее обоих детекторов, вердикт пересчитывается сразу.
Правило доверенности
| Что найдено | Вердикт |
|---|---|
| Печать есть и подтверждена моделью (или опознана в реестре как печать стороны документа) | ok — доверенность не нужна |
| Подпись, печати нет, доверенность не приложена | нужна доверенность — открывается задача на проверку |
| Подпись, печати нет, доверенность приложена | ok |
| Квалифицированная электронная подпись | ok — самодостаточна |
| Печать увидел только цветовой детектор, без подтверждения | проверка — печать снимает требование доверенности, поэтому без подтверждения не принимается |
| Печать принадлежит организации, не являющейся стороной документа | проверка — чужая печать |
| Печать опознана, но её структура отличается от зарегистрированного оттиска | проверка — похоже на перерисованную |
| Ничего не найдено | проверка |
| Договоры, требования, пакеты ответов | не применяется |
Чтобы приложить доверенность, нажмите Attach power of attorney в документе и укажите либо скан доверенности, уже лежащий в архиве, либо её номер и дату. Правила и пороги — в config/compliance_rules.yaml; версия правил, по которой принято решение, сохраняется вместе с документом.
Реестр печатей и подписей
Реестр — словарь печатей и подписей, которые архив уже видел. У каждой записи (шаблона) есть эталонное изображение, поисковый вектор, владелец (ИНН организации или человек), название и история оттисков, по которым он выучен.
- Опознана — отметка совпадает с шаблоном на ≥ 88 %. Владелец сверяется со сторонами документа. Модель не вызывается.
- Вероятно — 75–88 %: шаблон предложен; подтвердите кнопкой Same или отклоните Different.
- Неизвестна — ничего похожего. Нажмите New template…, чтобы зарегистрировать, или оставьте и используйте Propose from confirmed marks на вкладке Registry — она сгруппирует подтверждённые оттиски в предложенные шаблоны, которые остаётся назвать.
Автоподтверждение: печать принимается без человека, только если она опознана, её владелец — сторона документа, у шаблона не меньше 5 подтверждённых человеком оттисков, структура совпадает и не сработала ни одна примета вставленного изображения. Шаблон можно вывести из оборота (админ), когда печать переизготовили; старый сохраняется для истории. Именование — от владельца: 7715589370/stamp/main-round.
Что здесь значит «подделка»
| Подозрение | Что увидено | Надёжность |
|---|---|---|
| Чужой владелец | Печать опознана в реестре, но принадлежит организации, которая не является ни продавцом, ни контрагентом по этому документу. Самое частое нарушение в жизни — не поддельная, а чужая печать: дочерней компании, бывшего юрлица, та, которой на этой бумаге быть не должно. | Высокая — сравниваются два ИНН, модель не участвует |
| Вставленное изображение | Оттиск попиксельно совпадает с другим оттиском в архиве (настоящая печать никогда не повторяется точно), либо ошибка JPEG-сжатия и цвет чернил отличаются от остальной страницы так, как бывает у картинки, вставленной перед сканированием или в PDF. | Высокая при двух совпавших приметах; попиксельный дубликат — решающий сам по себе |
| Расхождение структуры | Печать достаточно похожа на зарегистрированную, чтобы быть опознанной, но после совмещения различаются шаг текста по ободу, диаметр или плотность чернил — так выглядит перерисованная или заново набранная печать. | Хорошая для печатей; ориентировочная для подписей |
| Расхождение подписи | Подпись под напечатанной фамилией, зарегистрированная подпись которой выглядит иначе. | Только ориентир. Проверка подписи по скану 300 dpi — нерешённая задача; архив говорит «не похожа на имеющиеся образцы», никогда — «подделана». |
Каждое подозрение показывает доказательства (два изображения рядом, сработавшие приметы), чтобы проверяющий мог согласиться или отменить одним нажатием.
Требования о представлении документов
Требование налоговой (ст. 93 / 93.1 НК РФ), запрос банка по 115-ФЗ, письмо аудитора или контрагента: отправитель, номер, основание, срок в рабочих днях и перечень того, что нужно представить.
- Загрузить и прочитать. Скан распознаётся; локальная модель превращает его в чек-лист (отправитель, №, дата, основание, пункты с типами документов, номерами, периодами и контрагентами). Срок считается от даты получения по производственному календарю РФ (выходные и праздники пропускаются).
- Документы. Каждый пункт сопоставляется с архивом по ИНН контрагента, типу, периоду и номеру; подтягиваются сопутствующие документы (ТТН к УПД). Уверенные совпадения приняты заранее. Принять, снять, приложить другой документ или отметить пункт «Нет в архиве» с причиной, которая попадёт в письмо. На каждом предложенном документе показан значок печать/доверенность — не отдавайте инспектору то, что помечено.
- Письмо. Шапка, адресат, ссылка на требование и опись (нумерованный список копий с числом листов) формируются из чек-листа; пояснительный абзац составляет модель, править его — вам.
- Пакет. Один PDF с нумерацией страниц (письмо → опись → копии), ZIP с отдельными файлами для ТКС и письмо в .docx. Затем Mark as sent с указанием канала и даты.
Ничего не отправляется автоматически. Значок на вкладке Requests считает просроченные требования и те, по которым осталось не больше пяти рабочих дней.
Договоры
Договоры сканируются и хранятся как все документы, затем проверяются: модель читает договор в структуру (стороны с реквизитами, тип, предмет, цена, НДС, оплата, срок, неустойки, подсудность, какие стандартные разделы есть, какие рисковые условия присутствуют), а правила из config/contract_rules.yaml определяют, чего не хватает и что опасно, ссылаются на закон и направляют договор по маршруту.
Проверка реквизитов (детерминированно, без модели)
- контрольный разряд ИНН (10 и 12 цифр), формат КПП, контрольный разряд ОГРН, формат БИК;
- контрольный ключ расчётного и корреспондентского счёта по БИК (правило Банка России);
- название контрагента — против названия, известного по этому ИНН в архиве.
Существенные условия и риски
Для поставки существенны наименование и количество товара и срок поставки (ст. 455, 465, 506 ГК РФ); для услуг — перечень услуг (ст. 779); для аренды — определённый объект и, для недвижимости, размер платы (ст. 607, 654). Отмечаемые рисковые условия: одностороннее изменение цены, односторонняя или чрезмерная неустойка, подсудность за рубежом или в регионе контрагента, 100 % предоплата без обеспечения, автопролонгация, неограниченная ответственность, отсутствие условия об ЭДО, персональные данные без условий обработки, неясный НДС. У каждого — серьёзность, норма закона и предлагаемая редакция.
Маршрутизация
| Маршрут | Когда |
|---|---|
| legal (юрист) | Критичные ошибки реквизитов, отсутствуют существенные условия или два и более рисковых условия |
| director | Сумма договора ≥ 5 млн ₽ |
| accounting (бухгалтерия) | Существенные замечания по реквизитам или НДС |
| ok | Замечаний нет — к подписанию |
Протокол разногласий формируется из замечаний — строка на каждое: пункт, редакция контрагента, предлагаемая редакция, обоснование — и скачивается в .docx. Фиксируйте, что произошло (переговоры, подписан, действует, закрыт), чтобы отслеживать состояние; договоры, истекающие в ближайшие 45 дней, выводятся списком.
Добавление документов
- Обработать сканированный архив — поставить сканы из исходных папок в очередь пакетами; обработчик проведёт их через OCR → извлечение → сопоставление с 1С → архив. Возобновляемо: ничего не ставится в очередь дважды. Оригиналы не изменяются; папки смонтированы только для чтения.
- Загрузить скан — один файл, сразу.
- Добавить запись вручную — для документа, который есть в 1С, но скан отсутствует. Помечается как
manualи никогда не будет принят за прочитанное со скана.
Администрирование
Переиндексация повторяет извлечение и сопоставление по уже сохранённым документам с фильтрами — так исправленные правила или свежий реестр сделок 1С доходят до старых записей. Удалённые записи — список удалённого и восстановление.
Словарь
| УПД | Универсальный передаточный документ — счёт-фактура и передаточный акт в одной форме |
| ТТН | Товарно-транспортная накладная |
| Доверенность | Полномочие подписывать документы от имени организации |
| ИНН / КПП / ОГРН / БИК | Идентификационный номер налогоплательщика / код причины постановки / основной государственный регистрационный номер / банковский идентификационный код |
| Опись | Нумерованный перечень приложенных копий в ответе |
| ТКС | Телекоммуникационные каналы связи — электронная подача в налоговую через оператора |
| Шаблон (реестр) | Зарегистрированная печать или подпись с эталонным оттиском и вектором для поиска |