Scanbot SDK — коммерческий набор библиотек для встраивания сканирования документов, обработки изображений, OCR, генерации PDF и извлечения данных в мобильные, веб- и серверные приложения; это не отдельный редактор для конечного пользователя, а программный компонент, который разработчик подключает к своему проекту и настраивает под конкретный рабочий процесс.
Продукт развивает Scanbot SDK GmbH, вошедшая в состав Apryse: семейство включает нативные реализации для Android и iOS, веб-версию на WebAssembly, Linux SDK и обёртки для Flutter, React Native, .NET MAUI, Capacitor, Cordova, Kotlin Multiplatform и других сред. Основные алгоритмы выполняются локально, поэтому захваченные страницы не обязаны отправляться в облако производителя.
9.0 Получила новый Document Enhancer для выпрямления складок и изгибов, обновлённые модели обнаружения границ, улучшенный анализ качества, дополнительные параметры доступности и изменения API. Конкретный номер сборки зависит от платформы: например, Android Document Scanner опубликован как 9.0.1, iOS — как 9.0.2, Flutter — как 9.0.1, а Web SDK — как 9.0.0.
Скачать Scanbot SDK
- Редактирование PDF
- Русский интерфейс
- Просто новичкам
- Нужна интеграция в код
- Лицензия для продакшена
- Нет настольного редактора
Что представляет собой Scanbot SDK
Scanbot SDK следует рассматривать как конструктор функций захвата, а не как готовую программу-сканер. После подключения пакета приложение получает камеры, алгоритмы поиска контура, автоматический спуск, коррекцию перспективы, фильтры и готовые экраны. Пользователь видит интерфейс внутри банковского, страхового, логистического или корпоративного приложения, тогда как разработчик управляет параметрами через API. Поэтому привычного установочного мастера с ярлыком на рабочем столе у продукта нет: распространяются библиотеки, плагины и двоичные фреймворки для конкретных платформ.

Название охватывает несколько продуктовых линий. Document Scanner SDK отвечает за фотографии бумажных страниц и их преобразование в пригодные для дальнейшей обработки изображения или PDF. Barcode Scanner SDK декодирует одномерные и двумерные коды. Data Capture Modules распознают структурированные документы: машиносчитываемые зоны, удостоверения, водительские права, чеки, банковские карты, VIN и специальные формы. В статье акцент сделан на документном сканировании и PDF-процессе, потому что именно эта часть соответствует категории программ для работы с PDF.
Не следует смешивать SDK с бывшим потребительским приложением Scanbot. Компания начинала как doo GmbH, а после продажи B2C-приложения сосредоточилась на корпоративных компонентах и в 2022 году закрепила юридическое имя Scanbot SDK GmbH. Отдельные демонстрационные приложения в App Store и Google Play показывают возможности библиотек, но сами по себе не являются комплектом разработки и не заменяют лицензию для встраивания.
Для каких задач предназначен комплект
Главная задача — превратить камеру телефона, планшета, браузера или специализированного устройства в управляемый канал ввода документов. Типичный сценарий начинается с открытия экрана сканирования из бизнес-приложения. SDK анализирует видеопоток, ищет четырёхугольник листа, оценивает угол, размер, освещение и резкость, показывает пользователю подсказку и выполняет автоматический снимок, когда условия приемлемы. После захвата геометрия исправляется, фон отсекается, а изображение можно улучшить фильтром.

В страховании так принимают заявления, акты и фотографии полисов; в банке — анкеты и подтверждающие документы; в логистике — накладные и транспортные бумаги; в медицине — направления и формуляры; в сервисном приложении — чеки, счета и подписанные формы. SDK полезен там, где разработчику важно удержать пользователя внутри собственного интерфейса, исключить переход в сторонний сканер и получить предсказуемый результат для серверного OCR или хранилища.
Комплект не предназначен для ручного редактирования готовых PDF на компьютере. Он может создавать PDF, добавлять OCR-слой, управлять страницами и подготавливать изображения, но не предоставляет настольных инструментов правки абзацев, комментариев, закладок, форм или электронных подписей. Если задача состоит в открытии чужого PDF и изменении его содержимого, нужен редактор наподобие PDF Commander либо отдельный PDF SDK.
Как устроен интерфейс Ready-to-Use UI
Ready-to-Use UI, сокращённо RTU UI, — набор готовых экранов, которые можно запустить из приложения с конфигурационным объектом. Это самый быстрый путь внедрения: разработчик задаёт цвета, строки, лимит страниц, разрешённые источники, поведение автоспуска и последовательность экранов, а библиотека берёт на себя камеру, навигацию и обработку. В версии 2 интерфейс разделён на понятные этапы: введение, съёмка, подтверждение качества, обзор, кадрирование и сортировка.

На экране камеры отображаются заголовок, подсказка, контур найденного документа, кнопка затвора, переключатель вспышки, импорт из галереи и индикатор числа страниц. Подсказки меняются в зависимости от состояния: документ слишком далеко, виден не полностью, расположен под плохим углом, изображение тёмное или устройство движется. Автоспуск срабатывает только после стабилизации, что уменьшает долю смазанных кадров.
RTU UI можно сильно изменить, но это всё же готовый поток. Для нестандартного дизайна доступны Custom UI компоненты: собственное представление камеры соединяется с детектором, а приложение самостоятельно рисует рамки, кнопки и сообщения. Такой подход даёт больше свободы, но требует аккуратной реализации жизненного цикла камеры, разрешений, ориентации, фокуса, ошибок и сохранения результата.
Экран подтверждения и контроль качества
После снимка можно показать Acknowledge Screen. Он нужен не для декоративного предпросмотра, а для решения: принять страницу или переснять. В старых конфигурациях использовалась шкала от Very Poor до Excellent; в ветке 9.0 новый Document Quality Analyzer возвращает более прикладные состояния acceptable, unacceptable и uncertain. Приложение может показать экран всегда, только при проблеме или полностью пропустить его.

Анализатор оценивает пригодность изображения для дальнейшего процесса, а не художественное качество фотографии. Важны наличие документа, резкость, ориентация, достаточная видимость краёв, освещение и другие признаки. Разработчик должен сопоставлять порог с задачей: для простого хранения допустим более мягкий критерий, для автоматического извлечения реквизитов — строгий. Слишком высокий порог раздражает пользователей частыми пересъёмками, слишком низкий переносит ошибки в OCR и ручную проверку.
В версии 9.0 изменена логика предупреждений и удалён старый параметр minimumQuality в ряде API: настройку необходимо переносить в конфигурацию DoQA. При обновлении важно не только заменить имя свойства, но и заново проверить ветвление для случаев документ не найден, качество неприемлемо и результат неуверенный. Именно такие изменения делают миграцию между крупными версиями задачей разработчика, а не обычного пользователя.
Обзор многостраничного документа
Review Screen собирает страницы в единый документ до отправки результата в приложение. Пользователь может переходить между кадрами, увеличивать фрагменты, повторно снять неудачную страницу, импортировать изображение, повернуть, удалить, открыть кадрирование и завершить поток. Для многостраничных договоров и анкет это существенно: ошибка на третьем листе не вынуждает начинать всю сессию заново.

Разработчик задаёт максимальное число страниц и решает, открывать ли обзор после каждой съёмки, после достижения лимита или только по команде. Можно сразу показать существующий документ для режима редактирования, выбрать первую или последнюю страницу при добавлении и менять состав нижней панели. При одностраничном процессе обзор нередко отключают ради скорости, но тогда приложение должно самостоятельно дать пользователю возможность проверить итог.
Внутренний Document API хранит документ и страницы как объекты, а не как разрозненные пути к JPEG. Это упрощает добавление, изменение порядка, применение фильтра и последующий рендеринг PDF. При миграции со старого Page API нужно учитывать новые классы хранения и очищать устаревшие временные данные только после переноса, иначе приложение может потерять ранее сохранённые снимки.
Кадрирование, перспектива и ручная коррекция
Автоматический детектор обычно возвращает четыре точки границы листа. После захвата SDK выпрямляет перспективу так, будто камера находилась строго над документом. Если фон сложный, лист частично перекрыт или края сливаются со столом, пользователь может открыть Crop Screen и передвинуть вершины. Магнитные линии и увеличенные области возле маркеров помогают поставить точку точно.

Экран кадрирования можно запускать отдельно, например для изображения из галереи. Команды Detect, Rotate и Reset повторно ищут контур, поворачивают исходник или возвращают начальное состояние. В версии 9.0 поддержка уже обрезанных изображений стала явной: если алгоритм не находит отдельный лист, но изображение похоже на готовый кроп, возвращается статус OK_BUT_ALREADY_CROPPED и границы по краям кадра.
Ручная коррекция не должна маскировать системную проблему. Если пользователи постоянно двигают углы, стоит проверить разрешение камеры, режим preview FIT_IN или FILL_IN, контраст фона, разрешение на частично видимые документы и пороги детектора. На некоторых устройствах неправильное соотношение сторон предпросмотра приводит к визуальному смещению рамки; в новых API добавлен отдельный параметр cameraPreviewAspectRatio.
Изменение порядка страниц
Reorder Screen показывает миниатюры и позволяет менять их последовательность перетаскиванием. Это простой элемент, но он важен для договоров, заявлений и комплектов накладных: порядок должен сохраниться в итоговом PDF и в массиве результатов. Пользователь исправляет ошибку до загрузки, а сервер получает уже нормализованный документ.

При большом числе страниц миниатюры увеличивают расход памяти. В приложении следует тестировать максимальный лимит, размеры исходных снимков и поведение на недорогих устройствах. SDK хранит рабочие изображения локально, поэтому необходимо также предусмотреть свободное место, очистку отменённых сессий и защиту временных файлов. Шифрование хранилища доступно, но требует согласованной конфигурации на всех операциях чтения и записи.
Если сортировка не нужна, экран можно исключить из потока. Однако отключать его разумно только при гарантированно последовательной съёмке, например когда оператор получает страницы по одной из контролируемого источника. В пользовательском приложении возможность переставить листы обычно дешевле, чем последующая ручная обработка ошибочного PDF.
Рамка видоискателя и автоматический спуск
Finder overlay задаёт ожидаемую область документа поверх камеры. Для A4, Letter, банковской карты или нестандартного бланка можно указать соотношение сторон и выбрать сплошную либо угловую рамку. Это особенно полезно, когда нужно получить однородный масштаб: пользователь заранее понимает, где разместить документ, а алгоритм может учитывать ожидаемую геометрию при автоспуске.

Сплошная рамка лучше подчёркивает точную область, угловая меньше перекрывает изображение. Цвет контура обнаруженного листа обычно меняется при переходе от поиска к готовности. Нельзя полагаться только на цвет: для доступности важны текстовые подсказки, состояние кнопок и озвучивание через TalkBack или VoiceOver. В 9.0 добавлены настраиваемые строки состояния доступности и улучшено объявление переключателей камеры и вспышки.
Автоспуск удобен, но для глянцевых документов, нестабильного света и камер с медленным фокусом необходимо оставить ручную кнопку. В конфигурации можно различать поведение при автоматическом и ручном снимке, включать или отключать автокроп после ручного спуска и ограничивать число кадров. На реальных устройствах следует проверять не только успешный захват, но и отсутствие повторных снимков при долгом нажатии или двойном касании.
Многостраничная съёмка на практике
В многостраничном режиме счётчик возле миниатюры показывает уже захваченные листы. После каждого успешного кадра интерфейс возвращается к камере либо открывает обзор — это зависит от DocumentScanningFlow. Для анкеты из четырёх страниц удобно задать точный лимит; для произвольного договора лучше разрешить переменное число и дать пользователю завершить сессию вручную.

Каждый снимок проходит одинаковую цепочку: детекция, коррекция, возможно Document Enhancer, фильтр, анализ качества и запись в объект документа. Если обработка тяжёлая, интерфейс должен сохранять отзывчивость; нельзя запускать параллельный рендеринг PDF после каждой страницы без необходимости. Рациональнее собрать документ, а затем сформировать выбранные выходные форматы один раз.
При восстановлении после сворачивания приложения важно учитывать пути к локальным изображениям. На iOS и в кроссплатформенных обёртках после обновления приложения могут измениться URI, поэтому предусмотрены операции обновления ссылок и hibernationDirectory для данных ImageRef. Тесты должны включать блокировку экрана, уход в фон, нехватку памяти и возврат к незавершённому документу.
Фильтры и улучшение изображения
После геометрической коррекции можно применить цветовые и бинаризующие фильтры. Color Document Filter повышает читаемость цветных документов, сохраняя фотографии и печати. Grayscale удаляет цвет, но оставляет полутона. Binarization переводит изображение в чёрно-белый вид и часто помогает OCR на контрастном тексте. Параметрические фильтры позволяют отдельно управлять яркостью, контрастом, белой и чёрной точками, сглаживанием и подавлением шумов.
Выбор фильтра зависит от потребителя результата. Человеку обычно приятнее сглаженные буквы и сохранённые оттенки; машинному распознаванию иногда полезнее жёсткая бинаризация и удаление мелкого шума. Нельзя автоматически применять один пресет ко всем документам: тонкая кассовая печать, удостоверение с защитным фоном и цветная медицинская форма требуют разных настроек. Хороший процесс сохраняет исходник или позволяет повторно применить фильтр.
В ветке 8.1 появился ColorDocumentShadowRemovalFilter, удаляющий тени без намеренного повреждения текста, штрихкодов и изображений. В 9.0 Document Enhancer дополнил этот набор выпрямлением физических деформаций — складок, изгибов и скрученных краёв. Эти функции улучшают ввод, но не гарантируют восстановление информации, которой нет из-за блика, сильного размытия или обрезанной части листа.
Document Enhancer в версии 9.0
Document Enhancer обрабатывает не только перспективу плоского листа, но и локальные деформации бумаги. Метод straighten пытается распрямить складки, волны и загнутые участки. В RTU UI он включён по умолчанию для автокропа, а параметры выпрямления сохраняются в объекте страницы. Это важно для квитанций, тонких форм и документов, которые пользователь держит рукой.
Улучшение требует вычислений и может менять геометрию текста, поэтому его следует проверять на собственных образцах. Для юридически значимого хранилища разумно хранить исходный кадр или хотя бы иметь возможность отключить преобразование. Для OCR, напротив, выпрямление строк часто повышает стабильность сегментации. Выбор делается не по рекламному примеру, а по метрикам конкретного бэкенда.
При обновлении с версии 8 нужно учесть, что новые RTU-экраны могут автоматически применять Enhancer. Если раньше сервер ожидал только перспективно исправленное изображение, результаты станут визуально и геометрически отличаться. Регрессионный набор должен включать ровные листы, сложенные чеки, страницы книги, документы с печатями, таблицы и мелкий шрифт.
OCR и создание поискового PDF
Scanbot SDK может запускать локальное OCR и создавать PDF с текстовым слоем. Пользователь видит отсканированную страницу, а поверх неё в документе размещается невидимый распознанный текст, благодаря чему возможны поиск и копирование. В Android 9.0 часть Tesseract вынесена в отдельную необязательную зависимость sdk-ocr-tesseract, поэтому проект, использующий эти функции, должен добавить модуль явно.

OCR не равен редактированию PDF. Текстовый слой описывает содержимое страницы, но исходное изображение остаётся визуальной основой. Исправить опечатку как в текстовом процессоре через RTU UI нельзя. Приложение может получить структурированный результат, проверить слова и координаты, отправить данные в форму или сформировать новый документ, но интерфейс такой проверки создаёт разработчик.
Качество зависит от разрешения, контраста, языка, ориентации и шрифта. В 8.1 и 9.0 обновлялись модели, улучшалась обработка немецких диакритик и добавлялись алфавиты турецкого, польского, итальянского и румынского языков. Для русского текста нельзя автоматически переносить выводы из англоязычных примеров: необходим собственный тестовый набор и проверка поддержки выбранного OCR-движка.
PDF, TIFF, JPEG и PNG
Выходной формат задаётся приложением. PDF подходит для передачи многостраничного документа одним файлом и может включать OCR-слой. TIFF полезен в системах долговременного хранения и производственных системах, где ожидается многостраничное растровое представление и определённое сжатие. JPEG экономит место для фотографических страниц, но повторное перекодирование ухудшает качество. PNG сохраняет резкие границы и прозрачность не использует как ключевую функцию, зато обычно создаёт крупные файлы.
При генерации PDF следует выбрать размер страницы, поля, качество JPEG, DPI и режим OCR. Излишне высокое разрешение быстро раздувает документ и увеличивает время загрузки; слишком агрессивное сжатие портит мелкий текст. В версии 9.0 у ImageRef появился флаг optimize: кодировщик тратит больше времени ради лучшего JPEG-результата. Это осознанный обмен скорости на качество, а не бесплатное улучшение.
Ошибки рендеринга нужно обрабатывать отдельно от ошибок сканирования. Камера могла успешно получить пять страниц, но PDF не сформировался из-за нехватки места, отсутствующей лицензированной функции, повреждённого ImageRef или неправильной конфигурации OCR. Приложение должно сохранять документ до рендеринга и позволять повторить экспорт без повторной съёмки.
Локальная обработка и конфиденциальность
Нативные SDK заявлены как полностью офлайн-компоненты без обязательной передачи сканов на сервер производителя. Это означает, что приложение само решает, где хранить изображения и куда их загружать. Для банковских и медицинских процессов такая архитектура уменьшает число внешних получателей данных, но не освобождает разработчика от защиты собственной сети, журналов, резервных копий и аналитики.
Локальное выполнение следует подтвердить архитектурным тестом: перехватить трафик, отключить сеть и пройти весь сценарий. Отдельно проверяются загрузка лицензии, обновление приложения и сторонние зависимости. Web SDK работает в браузере на WebAssembly, однако сама страница и файлы библиотеки первоначально доставляются веб-сервером; после загрузки алгоритмы обработки могут выполняться на устройстве.
Для временных файлов доступны механизмы шифрования. Их необходимо включать до создания документов и использовать одинаковый FileIoProcessor при всех последующих операциях. Неполная миграция ключей или переключение схемы может сделать данные нечитаемыми. Отмена сессии должна очищать файлы, а успешная передача — удалять локальную копию согласно политике хранения приложения.
Лицензирование и режим оценки
Scanbot SDK — коммерческий продукт. Без действительного ключа многие варианты позволяют тестировать функции примерно одну минуту на сессию, но такая работа предназначена только для оценки. Для производственного приложения приобретается лицензия, привязанная к идентификатору пакета или bundle identifier. Повреждённый, истёкший или выданный для другого приложения ключ блокирует лицензируемые функции.
Ключ нельзя считать секретом уровня серверного пароля: мобильное приложение можно исследовать. Его задача — подтвердить право конкретного идентификатора приложения использовать модули. Тем не менее ключ не следует публиковать в открытом репозитории и логах. Для разных окружений полезно иметь отдельные сборки и правила, чтобы тестовый ключ случайно не ушёл в магазин приложений.
Производитель продвигает фиксированную годовую модель без оплаты за каждое сканирование, но точная комплектация зависит от договора и набора модулей. В публичной статье неразумно указывать неподтверждённую цену: документный сканер, OCR, извлечение данных и штрихкоды могут лицензироваться разными пакетами. Перед архитектурным решением следует перечислить нужные функции и платформы, а не сравнивать только маркетинговое название.
Поддерживаемые платформы
Нативные варианты доступны для Android и iOS. Веб-версия использует JavaScript и WebAssembly и рассчитана прежде всего на современные мобильные браузеры. Linux SDK предназначен для серверных и встраиваемых сценариев с обработкой статических изображений и видеопотоков. Для Windows документный набор не следует автоматически считать настольным приложением: отдельные Windows-предложения ориентированы на SDK и конкретные UI-технологии.
Кроссплатформенные плагины оборачивают нативное ядро: Flutter, React Native, .NET MAUI, Capacitor, Cordova, Kotlin Multiplatform и Xamarin. Они не всегда выпускаются в тот же день и могут иметь собственный номер версии. При выборе нужно проверять не только наличие названия фреймворка, но и доступность конкретного модуля, RTU UI, API низкого уровня и требуемой функции на обеих целевых ОС.
Ветка 9.0 повысила минимальную версию Android SDK до API 23 и требует современный Android Gradle Plugin; для Flutter указан минимум 3.27.0. iOS и веб имеют отдельные требования. Такие ограничения влияют на охват устройств и сборочную инфраструктуру, поэтому обновление SDK должно проходить через анализ пользовательской базы, CI и минимальных версий приложения.
Установка в Android-проект
Android-библиотеки распространяются через Maven-зависимости. Базовый пакет подключается в Gradle с номером версии из changelog, а RTU UI v2 добавляется отдельным артефактом io.scanbot:rtu-ui-v2-bundle. Камере требуется разрешение CAMERA и корректная декларация аппаратной возможности. Инициализацию выполняют до открытия сканера, обычно в Application или в ранней точке запуска.
Проект должен соответствовать требованиям Kotlin, AndroidX, Gradle и compileSdk. При переходе на 9.0 важно обновить Android Gradle Plugin до требуемой версии и учесть API 23. Если используется Tesseract OCR, добавляется отдельная зависимость sdk-ocr-tesseract; иначе итоговый пакет может быть меньше. R8 и ProGuard обычно получают consumer rules из SDK, но релизную сборку всё равно надо тестировать отдельно от debug.
Частые ошибки установки — конфликт версий Compose или Material, отсутствие репозитория, неинициализированный SDK, неверный ключ, несогласованные версии базового и UI-пакета. Диагностику начинают с дерева зависимостей и чистой сборки минимального примера. Подмена нескольких артефактов на разные минорные версии может компилироваться, но завершиться NoClassDefFoundError или несовпадением JNI-библиотек.
Установка в iOS-проект
Для iOS доступны Swift Package Manager и другие привычные менеджеры. Официальный SPM-репозиторий ссылается на двоичные ZIP-фреймворки, загружаемые с сервера Scanbot. Подключив пакет, разработчик добавляет описание использования камеры в Info.plist и инициализирует SDK с ключом до запуска экрана. Версия двоичного фреймворка должна соответствовать тегу и обёртке.
Дистрибутив является не приложением, а набором XCFramework и ресурсов для сборки. Поэтому проверка цифровой подписи отличается от проверки обычного DMG: важны контрольная сумма Swift Package, целостность пакета, происхождение репозитория и подпись итогового приложения разработчика. Официальный SPM-манифест содержит адрес двоичного пакета 9.0.3 и его контрольную сумму.
Типовые проблемы iOS связаны с разрешением камеры, архитектурами симулятора, настройками линковщика, жизненным циклом AVCaptureSession и несовпадением версий. В 9.0 исправлялись чёрный экран после возврата со страницы Review, точность применения полигона и сбои при переключении камеры. Регрессионный тест должен охватывать iPhone SE, iPad, альбомную ориентацию и многократный вход в сканер.
Flutter, React Native и другие обёртки
Кроссплатформенный пакет облегчает вызов RTU UI, но не устраняет нативные требования. В Flutter команда добавления пакета изменяет pubspec, после чего Android и iOS части всё равно должны иметь разрешения, минимальные версии и ключ. Результаты возвращаются асинхронно, а большие изображения лучше передавать как локальные ссылки или ImageRef, а не копировать через канал платформы.
Версия 9.0.1 Flutter-плагина основана на нативных SDK 9.0.x и содержит собственные исправления. При обновлении следует читать три журнала изменений: плагина, Android и iOS. Одинаковое имя свойства в Dart может соответствовать разной реализации на платформах, а функция иногда появляется сначала в нативном API и позже в обёртке.
Для React Native, Capacitor и Cordova действует тот же принцип. RTU UI обычно доступен быстрее и полнее, чем низкоуровневое управление каждым кадром. Если проекту нужен полностью авторский интерфейс камеры, полезно заранее проверить, существует ли Custom UI компонент именно в выбранной обёртке, иначе придётся писать собственный нативный мост.
Web SDK и отличие от онлайн-сервиса
Наличие Web SDK не делает Scanbot SDK онлайн-сервисом в смысле браузерного редактора. Разработчик устанавливает npm-пакет, размещает ресурсы на своём сайте и пишет код интеграции. Конечный пользователь действительно сканирует через браузер без установки отдельного приложения, но продукт как объект поставки остаётся устанавливаемой библиотекой для проекта. Поэтому поле online в пакете установлено в false.


WebAssembly требует современного браузера; документация перечисляет Edge 16+, Firefox 53+, Chrome 57+ и Safari 11+, при этом мобильный сценарий ориентирован на актуальные версии и iOS 14.5+. Необходимо работать через HTTPS, получить разрешение на камеру и учитывать ограничения iOS на выбор устройства, фоновые вкладки и память.
Ресурсы Web SDK можно обслуживать самостоятельно. Конфигурация определяет UI, обработку и лицензию, а результат остаётся в приложении. В 9.0 добавлена updateConfiguration для изменения параметров во время работы. Это удобно для смены темы или режима, но приложение должно понимать, какие свойства безопасно менять без перезапуска камеры.
Linux SDK и серверная обработка
Linux Document Scanner SDK предназначен для серверов и встраиваемых устройств. Он принимает статические изображения или кадры видеопотока, находит документ, исправляет перспективу и применяет фильтры. Это полезно, когда изображения приходят из электронной почты, загрузки пользователя, промышленной камеры или терминала, а мобильный RTU UI не нужен.
В версии 9.0 Linux-ветка получила обновлённые модели детектора и поддержку частично видимых документов во всех режимах. Есть обёртки для Python и Node.js, а Node.js-слой получил совместимость с Deno. Серверный вариант всё равно не является готовым веб-сайтом: разработчик строит очередь, API, хранение, масштабирование и мониторинг.
Для сервера особенно важны лимиты входных файлов, защита от декомпрессионных бомб, параллелизм и предсказуемое потребление памяти. Большой TIFF или PDF с сотнями страниц нельзя безусловно загружать в память целиком. SDK решает компьютерное зрение, но безопасность приёма файлов и эксплуатацию сервиса проектирует владелец системы.
Настройка цвета, текста и локализации
Палитра RTU UI позволяет привести экраны к фирменному стилю: меняются основные и фоновые цвета, состояния кнопок, рамка, нижняя панель и другие элементы. Строки заголовков, подсказок и действий задаются конфигурацией, поэтому интерфейс можно локализовать без форка библиотеки. Важно перевести не только статические кнопки, но и все динамические состояния камеры.
Длинные русские строки занимают больше места, чем короткие английские. После локализации проверяются маленькие экраны, увеличение системного шрифта, альбомная ориентация и доступность. В правых налево языках нужны отдельные тесты направления. Цветовая схема должна сохранять контраст, а подсказка не должна сливаться с живым изображением.
Готовый UI не означает, что можно пропустить UX-тест. Пользователь должен понимать, когда камера уже захватывает страницу, почему автоспуск не срабатывает, как перейти к обзору и что произойдёт после Submit. Лучше использовать термины бизнес-процесса — Сфотографировать счёт или Добавить страницу договора — вместо технического Scan Document.
Доступность и аппаратные особенности
Версия 9.0 расширила доступность кнопок вспышки, смены камеры и масштабирования, добавила строки активного состояния и навигацию по вершинам полигона с клавиатуры на Android. Это важно для пользователей TalkBack, VoiceOver и внешних устройств ввода. Собственная тема не должна удалять content description или делать активную кнопку визуально неотличимой.
Камеры разных телефонов отличаются фокусным расстоянием, стабилизацией, обработкой JPEG и набором виртуальных объективов. SDK выбирает подходящую камеру и разрешение, но приложение должно тестироваться на Samsung, Xiaomi, Pixel, iPhone с несколькими объективами и бюджетных устройствах. Проблема, не воспроизводимая на эмуляторе, часто связана именно с драйвером камеры.
Аппаратные кнопки громкости и новый camera control могут использоваться как затвор, если это разрешено конфигурацией. Функция удобна в перчатках и на терминалах, но требует защиты от случайных повторов. При смене ориентации нужно проверить не только UI, но и фактическую ориентацию сохранённого изображения и координат полигона.
Производительность и размер приложения
Алгоритмы детекции, OCR и извлечения данных используют нативный код и модели машинного обучения. Они увеличивают размер приложения и нагрузку на CPU. В 9.0 для Android добавлена новая модель декодирования штрихкодов примерно на 650 КБ, а Tesseract вынесен в опциональный модуль. Разделение помогает не включать ненужные возможности.
Производительность измеряют на целевых устройствах: время открытия камеры, частоту анализа кадров, задержку автоспуска, обработку после снимка, рендеринг PDF и пиковую память. Более высокая частота детектора не всегда улучшает UX — она может нагревать устройство и снижать время работы батареи. В API есть ограничения FPS и режимы усилий для некоторых декодеров.
Сохранение оригинала, отфильтрованной версии и PDF одновременно быстро расходует место. Приложение должно определить жизненный цикл каждого файла. ImageRef и hibernation позволяют управлять большими объектами без постоянного удержания битмапа в памяти, но требуют аккуратной очистки и восстановления ссылок.
Обработка ошибок
Ошибки удобно разделить на четыре группы: разрешения и камера, лицензия и инициализация, качество входа, хранение и экспорт. Пользовательское сообщение должно говорить, что сделать: разрешить камеру, положить лист на контрастный фон, включить свет, освободить место или повторить экспорт. Технический код и stack trace записываются в диагностический журнал, но не выводятся как единственная подсказка.
Чёрный экран часто означает, что камера не получила разрешение, занята другим контроллером или сессия неверно восстановлена после возврата. Смещённый полигон связан с преобразованием координат, ориентацией или preview mode. Постоянный статус too dark требует проверки реального света и порога. Неверная лицензия проверяется по bundle id, сроку и составу модулей.
Если PDF повреждён, сначала сохраняют исходные страницы и повторяют рендеринг без OCR. Затем отключают фильтры, меняют проблемную страницу и проверяют свободное место. Такой поэтапный метод отделяет ошибку изображения от OCR и PDF-генератора. В журналах версий неоднократно исправлялись редкие случаи неверного PDF, поэтому точный номер SDK важен для поддержки.
Обновление с предыдущих версий
Переход на крупную версию нельзя выполнять простой заменой номера зависимости. В 9.0 изменена нормализация координат: деление выполняется на width minus one и height minus one. Приложение, которое самостоятельно переводит нормализованные точки в пиксели, должно скорректировать формулы, иначе крайние координаты будут систематически смещаться.
Некоторые параметры устарели или удалены, Tesseract стал отдельным модулем, повысились минимальные версии Android и сборочных инструментов, а новые алгоритмы изменили результаты анализа качества и детекции. Для RTU UI необходимо сравнить конфигурационные классы и дефолты. Автоматическое применение Document Enhancer также меняет итоговое изображение.
Надёжная миграция использует набор эталонных документов и автоматические проверки: статус детекции, координаты, размер кропа, OCR, число страниц и валидность PDF. Визуальное сравнение дополняет метрики. После обновления выпускают внутреннюю бета-версию, отслеживают ошибки камеры по моделям устройств и только затем расширяют распространение.
Реальные рабочие процессы
Для приёма страхового заявления приложение открывает многостраничный режим, показывает короткое введение, требует приемлемого качества, разрешает переснять и переставить листы, затем создаёт PDF и отдельные JPEG для серверной классификации. До загрузки файл шифруется локально, после подтверждения сервера временные изображения удаляются.
Для сканирования чека нужен другой профиль: одностраничный режим, узкая вертикальная рамка, быстрый автоспуск, цветной фильтр с удалением теней и OCR. Review можно сократить до подтверждения. Для удостоверения личности задаётся фиксированное соотношение сторон и подключается Document Data Extractor, возвращающий поля как ключ-значение вместе с изображениями сторон.
Для веб-формы пользователь открывает ссылку на телефоне, разрешает камеру, снимает документ через RTU UI и отправляет результат в тот же процесс. Для серверной почты Linux SDK обрабатывает вложение без интерфейса. Эти сценарии используют общее ядро, но различаются контролем качества, хранением, экспортом и ответственностью пользователя.
Сильные стороны
Главное преимущество Scanbot SDK — цельный документный поток: камера, автоматический захват, пользовательские подсказки, анализ качества, обзор, кадрирование, сортировка, фильтры, OCR и PDF доступны в одной экосистеме. Разработчику не нужно соединять несколько несовместимых библиотек и самостоятельно строить все экраны.
Офлайн-архитектура полезна для конфиденциальных данных и нестабильной сети. Широкий выбор платформ позволяет использовать похожую логику в нативных и кроссплатформенных приложениях, браузере и на Linux-сервере. Готовые демо и примеры ускоряют прототипирование, а Custom UI оставляет путь к глубокой интеграции.
Регулярные changelog показывают исправления конкретных камер, PDF, OCR и интерфейса. Для корпоративного продукта это важнее количества рекламных фильтров: сканер должен стабильно работать на разнообразных устройствах и возвращать контролируемый результат.
Ограничения и недостатки
Scanbot SDK не подходит человеку, который просто хочет установить сканер или PDF-редактор. Нужен проект, сборочная система и разработчик. Даже демонстрационное приложение предназначено для оценки, а не для организации пользовательской коллекции. Это фундаментальное отличие от SwiftScan, Adobe Scan или PDF Commander.
Производственное использование требует коммерческой лицензии. Состав функций и платформ должен быть согласован заранее; включение OCR или модулей извлечения данных может зависеть от пакета. Пробный режим с ограничением времени не годится для публикации приложения.
Кроссплатформенность не означает абсолютную одинаковость API. Версии выходят не синхронно, некоторые возможности сначала появляются на Android или iOS, а готовый UI может отличаться. Крупные обновления содержат breaking changes и требуют регрессионного тестирования. Размер приложения и нагрузка на устройство выше, чем у простой библиотеки поиска контура.
Сравнение Scanbot SDK с аналогами
Scanbot SDK конкурирует не с обычными PDF-просмотрщиками, а с наборами компьютерного зрения и готовыми потоками мобильного сканирования. Поэтому сравнивать нужно наличие платформ, качество захвата, UI, управление страницами, локальную обработку и сложность интеграции. PDF Commander добавлен отдельно как практический выбор для конечного пользователя, которому не нужен программный компонент.
Genius Scan SDK близок по назначению и предлагает нативные, гибридные и веб-варианты. Dynamsoft Document Normalizer силён в обнаружении четырёхугольников и нормализации изображения, но документный обзор и редактирование страниц могут потребовать дополнительных компонентов. Docutain объединяет сканирование, OCR и извлечение данных. ML Kit удобен для стандартного Android-потока, когда глубокая фирменная настройка не является приоритетом.
Практический вывод: Scanbot SDK выбирают для управляемого корпоративного процесса с готовыми экранами и широким набором модулей; Genius Scan SDK — когда важна знакомая технология мобильного сканера; Dynamsoft — когда центральна нормализация и другие задачи Capture Vision; Docutain — для локального мобильного ввода с OCR; ML Kit — для простого Android-сценария. PDF Commander нужен не разработчику SDK, а пользователю, который хочет править уже созданные PDF.
| Программа | Лучше подходит для | Главное ограничение |
|---|---|---|
| Scanbot SDK | Корпоративных мобильных, веб- и серверных процессов с готовым UI, PDF, OCR и контролем качества | Коммерческая лицензия и интеграция разработчиком |
| Genius Scan SDK | Встраивания проверенного мобильного сканера в iOS, Android, гибридные и веб-приложения | Низкоуровневый контроль полнее на нативных платформах |
| Dynamsoft Document Normalizer | Детекции границ, нормализации перспективы и компьютерного зрения в составе Capture Vision | Меньше готовых средств управления многостраничным документом |
| Docutain SDK | Мобильного сканирования, OCR и извлечения данных с локальной обработкой | Набор платформ и модулей надо сверять по конкретному пакету |
| Google ML Kit Document Scanner | Быстрого добавления стандартного сканирующего потока в Android | Ориентирован на Android и имеет ограниченную кастомизацию |
| PDF Commander | Ручного открытия, редактирования и сборки PDF на компьютере | Не SDK камеры и не встраивается в мобильное приложение |
Как выбрать конфигурацию для проекта
Начните не со списка функций, а с результата: что сервер должен получить, какие документы снимаются, сколько страниц, допустим ли ручной обзор и что считается плохим кадром. Затем выберите платформы, RTU UI или Custom UI, формат хранения, фильтр, OCR и политику очистки. Отдельно зафиксируйте минимальные версии ОС и размер приложения.
Создайте тестовый корпус из реальных, но обезличенных документов: мятые чеки, глянцевые карты, тонкие бланки, страницы с печатями, тёмные и пересвеченные кадры. Оцените не только долю успешных сканов, но и число пересъёмок, время сессии, размер PDF, точность OCR и процент ручной проверки на сервере.
После прототипа сравните SDK с альтернативой на одинаковых устройствах и документах. Маркетинговая демонстрация на одном идеальном листе не показывает поведение в реальной сети отделений или у домашнего пользователя. Решение о лицензии оправдано, когда измерены снижение ошибок, экономия разработки и стоимость поддержки.
Проверка камеры перед выпуском
Матрица устройств должна включать разные поколения Android и iOS, широкоугольные и обычные объективы, экраны с вырезами, режим увеличенного шрифта и ограниченный объём памяти. Для каждого аппарата фиксируют время старта, стабильность автофокуса, точность рамки, ориентацию файла и температуру после длинной сессии. Отдельно проверяют отказ в разрешении, повторный запрос, переход в настройки и возврат в приложение.
Контроль результата на сервере
Даже хороший мобильный сканер не отменяет серверную валидацию. Бэкенд проверяет MIME-тип, размер, число страниц, целостность PDF и соответствие бизнес-правилам. Если OCR извлёк критическое поле, полезно хранить уверенность и координаты, чтобы оператор видел исходный фрагмент. Ошибка распознавания не должна автоматически становиться подтверждённым реквизитом.
Логи и техническая поддержка
Для воспроизводимости в журнал записывают версию SDK, платформу, модель устройства, версию ОС, выбранный поток и код ошибки, но не содержимое документа. Пользовательский идентификатор обезличивают. При обращении в поддержку минимальный проект и точная последовательность действий ценнее скриншота общего сообщения. Логи production-сборки не должны содержать ключ лицензии или пути, раскрывающие персональные данные.
Тестирование PDF
Сформированный PDF открывают в нескольких независимых просмотрщиках, проверяют число страниц, размер листа, поворот, поиск OCR и печать. Файл прогоняют через валидатор, а изображения сравнивают с исходными. Для длинных документов измеряют время и память. Отдельный тест нужен для отмены генерации, нехватки места и страницы с нестандартным цветовым профилем.
Граница ответственности SDK
Библиотека отвечает за захват и обработку, но не определяет юридическую силу электронной копии, срок хранения, согласие пользователя и правила трансграничной передачи. Эти вопросы решаются политиками продукта и законодательством. Техническая возможность полностью офлайн не означает, что готовое приложение не отправляет данные: сетевой код принадлежит интегратору.
Переход от демонстрации к production
Демо показывает функции с заранее выбранной темой и документами. Production требует обработать аналитику отказов, локализацию, доступность, восстановление сессии, удаление файлов и обновление лицензии. Не следует копировать все настройки демо: например, мягкий порог качества подходит презентации, но может быть недостаточен для автоматического ввода платёжных реквизитов.
Работа с галереей
Импорт существующих изображений полезен, когда документ уже сфотографирован, но повышает риск низкого качества и неверной ориентации. Приложение может разрешить галерею, пропустить камеру и провести детекцию на статическом файле. Необходимо ограничить размеры и поддерживаемые форматы, обрабатывать метаданные ориентации и не доверять расширению имени файла.
Сканирование частично видимых документов
В 9.0 детектор умеет явно сообщать о документе, у которого видны только одна–три вершины, если разрешён соответствующий режим. Это полезно для больших листов и контролируемого кадрирования, но опасно в обычной анкете: пользователь может отправить обрезанный реквизит. Статус следует преобразовать в понятную подсказку и принимать только в тех сценариях, где неполный кадр ожидаем.
Распознавание ориентации
Document Quality Analyzer оценивает направление текста и может помочь автоматическому повороту. Новая логика учитывает текст под произвольным углом и округляет к ближайшему кратному девяноста. Для документов с вертикальными подписями, таблицами и смешанными языками возможна неопределённость, поэтому оригинальная ориентация и ручной поворот остаются важными.
Сохранение оригинала
Сохранение исходного кадра повышает проверяемость и позволяет повторить обработку новой версией алгоритма. Цена — дополнительное место и персональные данные. Компромисс: хранить оригинал только до успешной серверной проверки, затем оставлять оптимизированный PDF. Политика должна быть одинаково реализована при успехе, отмене, сбое сети и аварийном завершении.
Контрольный список перед публикацией
Инициализация
Ключ загружен до открытия UI; ошибки лицензии перехватываются; логирование отключено или обезличено в production.
Разрешения
Камера корректно запрашивается, отказ объясняется, повторный запрос не зациклен, переход в настройки протестирован.
Сессия
Отмена, фон, блокировка экрана, поворот и нехватка памяти не создают дубликаты и не теряют уже снятые страницы.
Качество
Пороги DoQA проверены на реальных документах; uncertain не трактуется как безусловный успех; есть понятная пересъёмка.
Экспорт
PDF, TIFF и изображения валидны; OCR-слой соответствует странице; ошибки диска не требуют повторной съёмки.
Хранилище
Временные файлы шифруются при необходимости, очищаются после передачи и не попадают в резервные копии без решения владельца.
Обновление
Версия SDK фиксирована; changelog просмотрен; breaking changes покрыты тестами; откат сборки возможен.
Доступность
TalkBack и VoiceOver читают кнопки и состояния; крупный шрифт не обрезает команды; цвет не единственный сигнал.
Аналитика
Собираются только технические метрики без изображения документа и распознанных персональных полей.
Поддержка
Известны точные версии нативных библиотек и обёртки; создан минимальный воспроизводимый проект для эскалации.
Технические примечания
Выбор режима камеры
FIT_IN показывает весь кадр и может оставлять поля; FILL_IN заполняет область, но обрезает края. Геометрия overlay должна соответствовать преобразованию preview. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Автофокус
Перед автоспуском полезна стабильная фокусировка. Tap-to-focus можно включить в Custom UI, но в 9.0 он по умолчанию отключён для новых параметров. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Вспышка
Факел помогает в темноте, но создаёт блики на ламинированных картах. Состояние должно быть видно и озвучено. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Импорт PDF
Создание документа из существующего PDF зависит от платформы и лицензированных возможностей; каждую страницу следует валидировать отдельно. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Шифрование
AES-GCM защищает файлы на диске, но ключ и жизненный цикл требуют проектного решения. Потеря ключа равна потере документа. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Нормализованные координаты
После 9.0 крайняя точка соответствует width minus one, поэтому собственные формулы и сериализованные полигоны старой версии нуждаются в проверке. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Сжатие JPEG
Флаг optimize повышает эффективность кодирования ценой времени. Он не восстанавливает детали, потерянные камерой. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Порог already cropped
Статус готового кропа полезен для галереи, но не должен скрывать отсутствие обнаруженного листа в живой камере. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Страница подтверждения
Режим Always повышает контроль, Bad Quality ускоряет поток, None уместен только при другом механизме проверки. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Удаление страниц
Удаление в Review должно сразу менять счётчик, объект документа и итоговый порядок; сервер не должен получать устаревшую копию. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Поворот
Поворот должен обновлять изображение, размеры страницы, координаты OCR и последующий PDF, а не только CSS-превью. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Ретейк
Повторный снимок заменяет выбранную страницу, сохраняя позицию. Временный старый файл удаляют после успешной замены. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Лимит страниц
Лимит защищает UX, память и размер загрузки. Значение выбирают по бизнес-документу, а не максимальной возможности SDK. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Серверная очередь
При большом потоке PDF формируют и загружают асинхронно, но пользователь получает однозначный статус и возможность повтора. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Версионность результата
Полезно записывать версию алгоритма вместе с документом, чтобы объяснять различия после обновления моделей. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Выбор режима камеры
FIT_IN показывает весь кадр и может оставлять поля; FILL_IN заполняет область, но обрезает края. Геометрия overlay должна соответствовать преобразованию preview. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Автофокус
Перед автоспуском полезна стабильная фокусировка. Tap-to-focus можно включить в Custom UI, но в 9.0 он по умолчанию отключён для новых параметров. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Вспышка
Факел помогает в темноте, но создаёт блики на ламинированных картах. Состояние должно быть видно и озвучено. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Импорт PDF
Создание документа из существующего PDF зависит от платформы и лицензированных возможностей; каждую страницу следует валидировать отдельно. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Шифрование
AES-GCM защищает файлы на диске, но ключ и жизненный цикл требуют проектного решения. Потеря ключа равна потере документа. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Нормализованные координаты
После 9.0 крайняя точка соответствует width minus one, поэтому собственные формулы и сериализованные полигоны старой версии нуждаются в проверке. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Сжатие JPEG
Флаг optimize повышает эффективность кодирования ценой времени. Он не восстанавливает детали, потерянные камерой. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Порог already cropped
Статус готового кропа полезен для галереи, но не должен скрывать отсутствие обнаруженного листа в живой камере. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Страница подтверждения
Режим Always повышает контроль, Bad Quality ускоряет поток, None уместен только при другом механизме проверки. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Удаление страниц
Удаление в Review должно сразу менять счётчик, объект документа и итоговый порядок; сервер не должен получать устаревшую копию. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Поворот
Поворот должен обновлять изображение, размеры страницы, координаты OCR и последующий PDF, а не только CSS-превью. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Ретейк
Повторный снимок заменяет выбранную страницу, сохраняя позицию. Временный старый файл удаляют после успешной замены. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Лимит страниц
Лимит защищает UX, память и размер загрузки. Значение выбирают по бизнес-документу, а не максимальной возможности SDK. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Серверная очередь
При большом потоке PDF формируют и загружают асинхронно, но пользователь получает однозначный статус и возможность повтора. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Версионность результата
Полезно записывать версию алгоритма вместе с документом, чтобы объяснять различия после обновления моделей. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Выбор режима камеры
FIT_IN показывает весь кадр и может оставлять поля; FILL_IN заполняет область, но обрезает края. Геометрия overlay должна соответствовать преобразованию preview. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Автофокус
Перед автоспуском полезна стабильная фокусировка. Tap-to-focus можно включить в Custom UI, но в 9.0 он по умолчанию отключён для новых параметров. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Вспышка
Факел помогает в темноте, но создаёт блики на ламинированных картах. Состояние должно быть видно и озвучено. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Импорт PDF
Создание документа из существующего PDF зависит от платформы и лицензированных возможностей; каждую страницу следует валидировать отдельно. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Шифрование
AES-GCM защищает файлы на диске, но ключ и жизненный цикл требуют проектного решения. Потеря ключа равна потере документа. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Нормализованные координаты
После 9.0 крайняя точка соответствует width minus one, поэтому собственные формулы и сериализованные полигоны старой версии нуждаются в проверке. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Сжатие JPEG
Флаг optimize повышает эффективность кодирования ценой времени. Он не восстанавливает детали, потерянные камерой. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Порог already cropped
Статус готового кропа полезен для галереи, но не должен скрывать отсутствие обнаруженного листа в живой камере. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Страница подтверждения
Режим Always повышает контроль, Bad Quality ускоряет поток, None уместен только при другом механизме проверки. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Удаление страниц
Удаление в Review должно сразу менять счётчик, объект документа и итоговый порядок; сервер не должен получать устаревшую копию. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Поворот
Поворот должен обновлять изображение, размеры страницы, координаты OCR и последующий PDF, а не только CSS-превью. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Ретейк
Повторный снимок заменяет выбранную страницу, сохраняя позицию. Временный старый файл удаляют после успешной замены. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Лимит страниц
Лимит защищает UX, память и размер загрузки. Значение выбирают по бизнес-документу, а не максимальной возможности SDK. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Серверная очередь
При большом потоке PDF формируют и загружают асинхронно, но пользователь получает однозначный статус и возможность повтора. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Версионность результата
Полезно записывать версию алгоритма вместе с документом, чтобы объяснять различия после обновления моделей. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Выбор режима камеры
FIT_IN показывает весь кадр и может оставлять поля; FILL_IN заполняет область, но обрезает края. Геометрия overlay должна соответствовать преобразованию preview. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Автофокус
Перед автоспуском полезна стабильная фокусировка. Tap-to-focus можно включить в Custom UI, но в 9.0 он по умолчанию отключён для новых параметров. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Вспышка
Факел помогает в темноте, но создаёт блики на ламинированных картах. Состояние должно быть видно и озвучено. В тестах фиксируют вход, конфигурацию, ожидаемый статус и фактический файл, чтобы результат можно было воспроизвести на следующей версии.
Итог
Scanbot SDK — зрелая платформа встраиваемого захвата документов, а не самостоятельный PDF-редактор. Она закрывает путь от камеры до подготовленного изображения или многостраничного PDF, предлагает готовый интерфейс, локальную обработку, OCR, фильтры, контроль качества и модули извлечения данных. Ветка 9.0 усилила выпрямление деформированной бумаги, детекцию и доступность, но принесла новые требования и изменения API.

Комплект особенно уместен в приложениях, где качество входных документов влияет на автоматизацию и затраты: банках, страховании, логистике, медицине и корпоративном документообороте. Его сильные стороны раскрываются после правильной настройки порогов, форматов, хранилища и пользовательского потока. Без разработки и коммерческой лицензии продукт не решит задачу обычного владельца компьютера.
Перед внедрением стоит собрать минимальный проект на выбранном фреймворке, проверить официальный пакет, пройти пробный сценарий на реальных устройствах и зафиксировать результаты. Такой подход показывает, соответствует ли Scanbot SDK конкретному процессу, и предотвращает дорогостоящие сюрпризы после публикации приложения.