antonov-ai.ru

Загрузите PDF (с текстовым слоем) или скан JPG/PNG — на сервере сработает OCR (Tesseract), затем free-LLM выдаст структурированный JSON по схеме (Zod). Файлы нигде не сохраняются: в журнале остаётся только SHA-256 хэш и метаданные.

лимит файла: MB tesseract: модель:
Тип:

Как это работает

Простая идея. Программа берёт текст из вашего файла (читает напрямую из PDF или распознаёт буквы на картинке), отдаёт его бесплатной нейросети и просит заполнить заранее придуманный шаблон — JSON с понятными полями. Перед тем как показать результат, код проверяет шаблон по строгой схеме: если хотя бы одно поле «не той формы», запрос автоматически переотправляется с подсказкой об ошибке. Файл при этом нигде не остаётся — он живёт только в памяти процесса несколько секунд.

  1. Браузер шлёт ваш файл на VPS обычной HTML-формой (multipart). На сервере он лежит в оперативной памяти, не пишется на диск.
  2. Если это PDF с текстовым слоем — текст берётся «как есть». Если это JPG/PNG — Tesseract.js на CPU распознаёт буквы (русский + английский).
  3. Текст вместе с компактным описанием схемы уходит free-LLM из OpenRouter в JSON-режиме — модель обязана вернуть один JSON-объект.
  4. Ответ парсится и валидируется библиотекой Zod. Если поле невалидное (например, не email) — один автоматический retry с подсказкой об ошибке. Если и тогда ошибка — fallback-модель.
  5. В журнал (audit.jsonl) пишется только SHA-256 файла, MIME, размер, время каждой стадии и id запроса — никакого содержимого.

Стек и ограничения

  • OCR: tesseract.js 5 (WASM в процессе Node), языки rus+eng, traineddata закэширована на VPS в /var/lib/antonov-ai/tessdata.
  • PDF: pdf-parse. Сканы PDF без текстового слоя в v1 не поддерживаются — попросит загрузить страницу как JPG/PNG.
  • Schema: Zod. Три типа: resume, invoice, generic.
  • LLM: free-модели OpenRouter из живого ранкинга, JSON-mode + retry + fallback-модель.
  • Файлы не сохраняются. Лимит — 5 MB. Audit пишет только хэш и метаданные.
  • Tesseract на CPU небыстрый — на скане A4 уходит 3–8 секунд. Для PDF с текстовым слоем извлечение мгновенно.