A-PDF Content Splitter разделяет большие PDF на отдельные документы по тексту, который находится в заданной области страницы: в редакторе правила выбирают образец, отмечают номер счёта, сотрудника или другой идентификатор, задают условие срабатывания, шаблон имени и папку вывода, после чего программа обрабатывает один файл, пакет или отслеживаемую папку и записывает ход операции в журнал.
Основной рабочий экран устроен как последовательность действий: сверху формируется список исходных PDF, ниже выбирается сохранённое правило, затем задаётся каталог результата и запускается Split All. Правило можно сохранить, повторно применять к однотипным отчётам, экспортировать и переносить на другой компьютер. Такой подход особенно полезен для серийных документов с одинаковым макетом, где номер счёта, заказа, сотрудника или другой маркер печатается в одном и том же месте.
Разделение строится не на визуальном сходстве страниц, а на доступном текстовом слое и координатах выбранного фрагмента. Поэтому наиболее предсказуемый результат получается у PDF, созданных из бухгалтерских, кадровых и отчётных систем. Для сканов без распознанного текста сначала требуется OCR, а при небольшом смещении реквизита можно настроить допустимое отклонение координат и выравнивание образца.
Скачать A-PDF Content Splitter
- Нет встроенного OCR
- Макет должен быть стабильным
- Нужен текстовый слой
Как A-PDF Content Splitter определяет границы документов
В обычной задаче разделения заранее известна граница: каждые десять страниц, конкретный диапазон или закладка. A-PDF Content Splitter решает другой класс задач — количество страниц у каждой логической записи может меняться, а граница определяется текстовым реквизитом. Пользователь указывает область страницы, где располагается идентификатор, и выбирает правило реакции на найденное значение. Благодаря этому один сводный файл можно превратить в набор счетов, ведомостей или отчётов без ручного подсчёта страниц каждого блока.
Ключевой элемент называется Split Tag. Это текст, получаемый из отмеченной позиции. Для одной формы таким тегом может быть номер счёта, для другой — табельный номер сотрудника, код заказа или номер раздела. Важно, что программа не угадывает назначение поля: смысл задаёт пользователь, выбирая конкретную область образца. Поэтому качество правила зависит от того, насколько однозначно выбранный реквизит соответствует будущему выходному документу.
Второй тип метки — Macro Tag. Он предназначен для дополнительного текста, который можно включить в имя или свойства результата. Split Tag отвечает прежде всего за логику границы, а Macro Tag позволяет добавить, например, имя клиента, дату или другое поле, не делая его условием разделения. Такое разделение ролей помогает строить устойчивые правила: для границы выбирается самый стабильный идентификатор, а для понятного имени — удобные пользователю реквизиты.
- Split Tag — текстовый ключ, участвующий в условии разделения.
- Macro Tag — дополнительное поле для имени и свойств результата.
- Sample PDF — образец, на котором мышью выбираются области с текстом.
- Split Rule — сохранённая конфигурация координат, условий, имён и параметров.
- Split All — запуск обработки всех PDF, добавленных в текущий список.

Добавление файлов и каталогов
В верхней части главного окна находится PDF File List. В него можно добавить один документ командой Add PDF Document, перетащить PDF мышью или выбрать каталог. Для каталога предусмотрено включение подпапок, поэтому одна операция способна сформировать очередь из целой структуры однотипных файлов. Такой пакетный ввод имеет смысл после проверки правила на нескольких образцах: одно и то же правило затем применяется ко всем позициям списка.
Двойной щелчок по файлу открывает его в системном PDF-просмотрщике. Это удобно перед запуском: можно выборочно убедиться, что в очередь попали документы нужной формы. Если в один список случайно добавить отчёты разных шаблонов, координатное правило может считывать не то поле. Поэтому очередь лучше формировать по принципу один тип формы — одно проверенное правило, а не смешивать все PDF из общего архива.
Для защищённого PDF предусмотрен ввод пароля. Если документ требует пароль открытия, без корректного значения программа не сможет получить содержимое, необходимое для анализа. Само наличие защиты не меняет принцип работы Split Tag: после успешного открытия текст всё равно должен присутствовать в документе и находиться в ожидаемой области.

Главное окно: что проверять перед запуском
Рабочий экран организован вокруг четырёх элементов: список PDF, выбранное правило, каталог результата и журнал. Такая последовательность позволяет перед каждой операцией проверить, что обрабатываются нужные файлы, активно правильное правило и результат уйдёт в ожидаемую папку. Ошибка в любом из этих трёх параметров может дать технически успешное, но непригодное распределение документов.
Рядом со списком правил находятся команды создания, редактирования, удаления, импорта и экспорта. Правило должно иметь уникальное имя. Практически полезно называть его по форме и ключу, например по типу отчёта и полю, которое используется как Split Tag. Имена вроде Rule1 плохо помогают при нескольких конфигурациях, особенно когда обработка выполняется регулярно.
Каталог вывода можно задать отдельно от исходников. Также предусмотрена опция создания отдельной папки для каждого входного PDF. Она особенно полезна в пакетной очереди: если разные исходники содержат одинаковые номера счетов или сотрудников, результаты не смешиваются в одной директории. Кроме того, отдельная тестовая папка упрощает повторные проверки после изменения правила.

Редактор Split Rule и выбор образца
При создании правила сначала выбирается Sample PDF. В нём нужно перейти на страницу, где ключевой реквизит расположен типичным образом, выделить нужный текст и добавить его в Split Tag List. Программа фиксирует выбранное значение вместе с его положением. В дальнейшем при обработке она извлекает текст из соответствующей области других страниц и применяет заданное условие.
Образец лучше брать из реального потока, а не из искусственно подготовленного PDF. Даже если два документа визуально выглядят одинаково, внутренние координаты текста могут отличаться после повторной печати через виртуальный принтер, изменения размера страницы или другого генератора PDF. Для регулярного процесса важно, чтобы образец был создан тем же способом, что и будущие входные файлы.
Встроенная подсказка редактора показывает этапы подготовки: выбор образца, отметка текста, добавление Split Tag, настройка условия и схемы имени. Она полезна при первом знакомстве, потому что в одном окне совмещены просмотр страницы и несколько панелей настройки. После освоения процесса все параметры можно проверять непосредственно в редакторе.

Координаты текста, допуск X/Y и выравнивание
После добавления образца редактор показывает параметры позиции. Координаты определяют, где на странице ожидается текст, а Position Deviation по X и Y разрешает небольшое отклонение. Это полезно, когда один и тот же реквизит в серийной форме немного смещается из-за длины строки или особенностей формирования PDF. Допуск следует увеличивать только настолько, насколько требуют реальные примеры: чрезмерная область способна захватить соседнее поле.
Samples Align задаёт привязку образца к левому краю, середине или правому краю. Параметр особенно важен для значений переменной длины. Если номер выровнен по правому краю, его левая координата меняется при добавлении цифр, а правая остаётся стабильной. Правильная ориентация помогает сопоставлять короткие и длинные значения, не расширяя область поиска без необходимости.
Проверку координат стоит проводить на нескольких страницах: с самым коротким идентификатором, самым длинным, первой и последней записью, а также на странице, где поле визуально сильнее всего смещено. Если правило работает только при очень большом X/Y, вероятно, выбранный шаблон недостаточно стабилен или отмечено неудачное поле. В таком случае надёжнее выбрать другой реквизит либо создать отдельное правило для другой формы.

Три условия срабатывания
Trigger for find different text
Режим отслеживает изменение текста в заданной позиции. Пока найденное значение остаётся тем же, страницы относятся к текущей части; при появлении другого значения начинается новый логический документ. Это естественный вариант для многостраничных счетов, расчётных листков и отчётов, где один идентификатор повторяется на каждой странице своего блока.
Главное требование — ключ действительно должен сохраняться на продолжениях. Если на второй странице счёта номер исчезает, выбранная область может вернуть пустую строку или иной текст и создать ложную границу. Перед применением этого режима нужно просмотреть несколько многостраничных записей и убедиться, что ключ присутствует там, где правило ожидает его увидеть.
Trigger for find text
Этот режим создаёт точку разделения при нахождении заданного текста. Он подходит, когда каждая логическая запись начинается устойчивым маркером, который появляется на первой странице и отсутствует на продолжениях. В таком сценарии не требуется сравнивать меняющиеся номера: достаточно точно определить область и текст, сигнализирующий о начале следующего блока.
Маркер должен быть специфичным. Общая подпись, которая повторяется на каждой странице, будет давать слишком много границ. Если постоянная фраза встречается и в заголовке, и в таблице, координатная привязка помогает выбрать только нужное появление, но выбранную область всё равно нужно проверить на всех типичных страницах.
Trigger for find different text and group
Этот вариант сначала реагирует на изменение найденного текста, а затем группирует части с одинаковым ключом. Он полезен, когда записи одного объекта встречаются в исходном PDF несколькими несмежными фрагментами и на выходе должны оказаться вместе. Например, один и тот же идентификатор может появиться в разных секциях сводного отчёта.
Группировку нельзя включать как универсальное улучшение. Если одинаковый ключ допустим у разных периодов или разных сущностей, отдельные документы могут объединиться ошибочно. Особенно опасны пустые значения: несколько фрагментов без корректно найденного текста выглядят одинаковыми. Поэтому режим требует уникального ключа и отдельной проверки повторов.
Transform: преобразование найденного текста
На вкладке Transform для тега можно использовать сценарий на синтаксисе Object Pascal. Он получает извлечённую строку и позволяет изменить её перед дальнейшей логикой. Практические задачи — убрать лишние пробелы, удалить фиксированный префикс, привести буквы к одному регистру, извлечь часть идентификатора или преобразовать печатное число в нормализованный вид.
Преобразование следует делать минимальным. Если номер INV-2026-00421 нужен целиком, нет смысла отрезать его до первых нескольких символов: разные документы могут стать одинаковыми после Transform. Сначала нужно добиться стабильного извлечения исходного текста, затем добавить ровно ту очистку, которая действительно требуется. Так легче понять, на каком этапе возникло расхождение.
Для строк доступны, среди прочего, Trim, TrimLeft, TrimRight, UpperCase, LowerCase, операции сравнения, поиска и замены, LeftStr, RightStr и MidStr. Для чисел есть преобразования в Integer и Extended, включая варианты со значением по умолчанию. Набор функций позволяет строить правила сложнее простого буквального сравнения, но каждую ветвь следует тестировать на допустимых и ошибочных значениях.
Validate: отбрасывание неподходящих значений
Validate используется как проверка найденного или преобразованного тега. Сценарий возвращает логическое решение, допустимо ли значение. Если в заданной области иногда оказывается заголовок, пустая строка или соседний реквизит, проверка может принимать только строки нужного формата. Например, можно проверять известный префикс, длину или результат безопасного числового преобразования.
Важно помнить порядок: сначала текст извлекается из позиции, затем к нему применяется Transform, а Validate должен учитывать уже получившееся значение. Если Transform удалил префикс, проверка не должна ожидать этот префикс. При диагностике полезно временно упростить оба сценария и убедиться, что координатная часть работает независимо от кода.
Validate особенно полезен для PDF после OCR. Распознавание может вернуть пустое поле, смешать похожие символы или вставить неожиданные пробелы. Проверка не исправляет ошибочно распознанный номер, но способна не принимать явно неподходящий текст как новый корректный ключ и тем самым уменьшить количество ложных границ.
Macro Tag и отдельные данные для имени
Macro Tag выбирается на образце похожим способом, но решает другую задачу: даёт текст для Filename pattern и свойств PDF. Например, разделение выполняется по номеру счёта, а в имя дополнительно требуется вставить фамилию клиента или дату. Это позволяет не усложнять Split Tag полями, которые не определяют границу.
Для Macro Tag предусмотрены собственные координаты, Position Deviation и Samples Align. Также можно определить, с какой страницы брать значение относительно разделяемого блока: с текущей, со следующей N-й страницы или из связанного диапазона части. Такой выбор нужен, если реквизит для имени печатается не там же, где срабатывает разделение.
При настройке страницы Macro Tag обязательно проверяют одностраничные и многостраничные документы. Если правило читает поле со следующей страницы, а часть иногда состоит всего из одной, нужного места может не существовать. Надёжнее выбирать страницу, на которой реквизит гарантированно присутствует для всех допустимых вариантов формы.
Macro Tag также поддерживает Transform и Validate. Поэтому значение для имени можно очистить от префикса, нормализовать регистр или отбрасывать неправильный формат отдельно от Split Tag. Это особенно полезно, когда граница уже работает правильно и менять её логику ради оформления имени нежелательно.

Шаблон имени выходного файла
Filename pattern строится из обычного текста и макросов. {basename} подставляет имя исходного PDF без расширения, {splittag} — найденный ключ, {part:0000} — последовательный номер части с заданной шириной. В документации также описаны буквенные и римские варианты номера части, а макросы страниц позволяют включать в имя исходный диапазон.
{filecount} относится к количеству результатов, {pagebegin} и {pageend} — к первой и последней исходной странице текущей части, {pagecount} — к числу страниц в ней, {pagerange} — к диапазону, {totalpage} — к общему числу страниц входного PDF. Эти данные удобны для диагностических имён: на этапе тестирования по имени сразу видно, откуда взят блок.
Шаблон должен обеспечивать уникальность. Если использовать только {splittag}, одинаковый номер в двух входных PDF может привести к совпадающим именам в общем каталоге. Безопаснее добавить {basename}, {part} или диапазон страниц. При создании отдельных папок для каждого исходника риск коллизий меньше, но уникальные имена всё равно удобнее для последующего копирования и архива.
Слишком длинные Macro Tag лучше не включать целиком. Для имени файла обычно достаточно короткого номера или кода; длинное описание можно записать в свойства PDF. Если в теге возможны символы, неудобные для имени Windows, их нужно нормализовать в сценарии и проверить на реальных максимальных значениях.
Script for Output Filename
Помимо обычного Filename pattern, правило может использовать Script for Output Filename. В сценарии доступны переменные BaseName, Part, PageBegin, PageEnd, PageRange, FileCount и SplitTag. Это даёт возможность условно менять имя, нормализовать найденные значения или добавлять вычисляемый фрагмент, когда простой последовательности макросов недостаточно.
Сценарий имени лучше применять после стабилизации границ. Ошибка здесь не должна заставлять менять Split Tag: если выходные страницы правильные, а название нет, проблема находится на уровне формирования строки. Для отката полезно экспортировать рабочее правило перед добавлением сложного кода и хранить краткое описание того, что именно делает сценарий.
Самый прозрачный вариант — минимальная обработка: удалить пробелы по краям, заменить фиксированный служебный фрагмент, привести регистр. Условные ветвления оправданы, когда они отражают реальную схему архива. Чем сложнее выражение, тем важнее тестировать значения разной длины, пустой тег и символы, которые могут быть недопустимы в имени файла.
Ограничение обрабатываемого диапазона страниц
В параметрах правила можно анализировать не весь исходный PDF, а указанный диапазон. Это удобно, если первые страницы являются обложкой, оглавлением или сводной частью, а серийные записи начинаются позже. В инструкции для конечной страницы используется значение -1 как обозначение последней страницы документа, поэтому фиксировать точное число страниц заранее не требуется.
Диапазон эффективен только при устойчивой структуре. Если в одном отчёте служебная часть занимает две страницы, а в другом пять, постоянный номер начала может исключить полезные данные или, наоборот, включить лишние. В таких случаях лучше найти текстовый признак начала рабочей части либо предварительно нормализовать входные PDF.
Перед применением диапазона нужно решить судьбу пропущенных страниц. A-PDF Content Splitter разделяет анализируемый материал по правилу, но не определяет по смыслу, к какому счёту должна относиться произвольная титульная страница. Если обложку необходимо сохранить вместе с конкретным результатом, это следует проверить отдельным тестом и при необходимости изменить подготовку входного файла.
Свойства сформированных PDF
В Properties правила доступны поля Title, Subject, Author и Keywords. В них можно использовать макросы, чтобы свойства результата зависели от найденного текста. Например, Title может включать номер документа, а Subject — тип отчёта. Такой подход полезен для систем, которые индексируют PDF не только по имени файла, но и по внутренним метаданным.
Свойства не заменяют понятное имя. Файл может быть скопирован в среду, где метаданные не отображаются, поэтому основной идентификатор лучше сохранять в имени, если это допустимо рабочим процессом. Macro Tag в Properties следует проверять так же, как в Filename pattern: пустое или неправильно прочитанное значение даст неверные метаданные даже при правильных границах.
При работе с персональными или финансовыми данными нужно учитывать, что Title, Subject и Keywords остаются частью PDF и могут отображаться в свойствах документа. Включайте туда только те реквизиты, которые действительно нужны дальнейшему поиску или маршрутизации.
Каталог результата и отдельные папки
Выход можно сохранять рядом с исходным PDF или в Alternative Directory. Для настройки правила практичнее отдельная папка: исходник остаётся нетронутым, результаты одной попытки легко удалить, а сравнение разных вариантов не смешивается. После подтверждения корректности путь можно заменить на рабочий.
Опция Create directories for each pdf создаёт отдельную директорию для каждого входного документа. Она особенно полезна при массовой обработке файлов, в которых повторяются одни и те же идентификаторы. Например, номер сотрудника может встречаться в отчёте за каждый месяц; отдельные папки сохраняют контекст исходника и снижают риск совпадения имён.
Если каталог находится на сетевом ресурсе, проверяйте права именно той учётной записи, которая запускает обработку. Ручной сеанс и планировщик могут иметь разный доступ. Для диагностики проблемы с записью сначала полезно использовать простой локальный путь, а после успешного теста возвращать сетевую директорию.

Журнал обработки и остановка задания
После запуска Split All нижняя часть окна используется как Log Viewer. В журнал попадают сведения о начале операции, входном файле, применяемом правиле, каталоге вывода и ходе анализа. Записи можно сохранить или скопировать. Это позволяет отличить проблему чтения PDF от ошибки настройки правила и понять, какой файл участвовал в конкретном запуске.
Кнопка Stop останавливает текущую операцию. Она полезна при тестовом пакете: если первые результаты уже показывают неправильные границы или имена, нет смысла создавать остальные. После остановки лучше очистить тестовую папку или выбрать новую директорию перед повтором, иначе старые и новые части окажутся рядом.
Сообщение об успешном завершении подтверждает техническое выполнение, но не правильность бизнес-разметки. После нового правила нужно сравнить число ожидаемых документов с фактическим, открыть несколько частей, проверить переход между двумя идентификаторами и убедиться, что Macro Tag соответствует содержимому полученного PDF.

Работа с PDF, защищённым паролем
Если входной PDF требует пароль открытия, его можно указать для выбранной позиции списка. После успешного доступа правило применяет обычную логику поиска текста. Важно не путать пароль с отсутствием текстового слоя: даже открытый документ может состоять из изображений, и тогда Split Tag всё равно не сможет получить нужный реквизит без предварительного распознавания.
В пакетной очереди защищённые документы следует проверить отдельно. Нельзя предполагать, что один пароль подходит ко всем файлам. Если автоматический сценарий должен регулярно получать такие PDF, процесс передачи пароля нужно продумать заранее; неправильный пароль будет ошибкой загрузки, а не ошибкой координат или условия разделения.
A-PDF Content Splitter не следует рассматривать как средство обхода защиты. Для корректной работы требуется действительный доступ к документу. Если пароль неизвестен, сначала нужно решить вопрос доступа к исходному PDF.
Hot Directory для повторяющегося потока
Hot Directory Mode позволяет связать сохранённое правило с отслеживаемой папкой. В настройке указываются Monitored Directory, Output Directory, Log File Directory и, при необходимости, Backup Directory. Такой режим удобен после того, как логика уже проверена вручную: новые PDF поступают в известную папку и обрабатываются по заранее заданной конфигурации.
Главное условие — однородный поток. Если в один Monitored Directory попадают документы двух разных форм, координаты одного правила могут оказаться неправильными для второй. Для разных шаблонов лучше выделять разные входные каталоги и правила. Это делает маршрутизацию явной и облегчает поиск причины ошибки.
Backup Directory помогает сохранять исходники отдельно от результата, а отдельная папка журнала не смешивает служебные записи с PDF. В рабочем процессе это важнее удобства: при спорном результате можно вернуться к оригиналу, повторить обработку изменённым правилом и сравнить два запуска.
Перед включением такого режима проверьте одинаковые имена входных файлов, пустой Split Tag, недоступный выходной каталог и несколько PDF подряд. Автоматизация не исправляет слабое правило; она лишь применяет его без ручной проверки к каждому файлу.


PCSCMD: запуск сохранённого правила из командной строки
Для повторного выполнения предусмотрена консольная команда PCSCMD. Ей передаются входной PDF, при необходимости пароль, файл правила и каталог вывода. Графический редактор используется для подготовки и проверки .rul, а затем ту же конфигурацию можно вызывать из пакетного файла или планировщика без повторной настройки координат.
Синтаксис строится вокруг входного файла, опции -S для пароля, файла правила и -O для каталога результата. Пути с пробелами необходимо заключать в кавычки. Стандартный вывод командной строки можно перенаправлять в текстовый файл средствами оболочки, что удобно для дополнительного журнала в автоматизированном процессе.
Документация перечисляет коды возврата: 0 — операция выполнена; 1 — ошибка параметров или вывод справки; 2 — не найден входной файл; 3 — не найден файл правила; 4 — ошибка загрузки PDF; 5 — ошибка разделения; 6 — не удалось создать выходной каталог; 99 — неизвестное исключение. Автоматизация должна проверять код, а не только наличие каких-либо файлов в папке.
Если правило было создано для конкретной формы, PCSCMD не делает его универсальным. Скрипт быстро тиражирует и правильную, и ошибочную логику. Перед массовым командным запуском полезно иметь контрольный PDF и ожидаемое количество частей, чтобы после изменения .rul можно было быстро провести регрессионную проверку.
Сценарий: счета с переменным числом страниц
Сводный файл со счетами — типичная задача для режима find different text. Если номер счёта повторяется на каждой странице одного счёта, его отмечают как Split Tag. Одностраничный счёт сразу сменяется новым номером, а четырёхстраничный сохраняет один ключ на четырёх страницах; граница появляется только при фактическом изменении номера.
Для такого правила нужно проверить продолжения: некоторые формы печатают номер только на первой странице. Тогда пустое поле на второй странице может быть воспринято как другое значение. Возможные решения зависят от формы: найти реквизит, повторяющийся на каждой странице, использовать маркер начала либо настроить Validate так, чтобы недопустимая пустая строка не превращалась в самостоятельный корректный ключ.
Имя результата удобно строить из {basename} и {splittag}; на тестовом этапе можно добавить {pagebegin} и {pageend}. Так по имени видно, какие страницы исходника попали в часть. После проверки диапазон можно убрать, если он не нужен конечному пользователю.
Сценарий: расчётные листки сотрудников
Для расчётных листков устойчивым Split Tag часто является табельный номер или другой уникальный код сотрудника. Фамилия менее удобна: она длиннее, может содержать пробелы, дефисы и совпадать у разных людей. Фамилию при этом можно взять отдельным Macro Tag и использовать для понятного имени вместе с кодом.
Если документы одного сотрудника находятся в нескольких несмежных блоках и действительно должны объединяться, проверяют режим find different text and group. Ключ должен быть уникальным в пределах партии. Совпавшие пустые значения или неуникальный код создадут неверную группу, поэтому такой режим требует контрольного набора с повторяющимися и крайними случаями.
Имена файлов нужно сверять с содержимым отдельно от границ. Можно получить правильно разделённые страницы, но ошибочный Macro Tag с фамилией из соседней строки. Для персональных данных такая ошибка критична, поэтому проверяют как минимум начало, середину и конец партии, а также значения максимальной длины.
Сценарий: заказы, накладные и акты
В документах продаж обычно присутствуют несколько идентификаторов: номер заказа, код клиента, номер накладной, номер акта. Split Tag должен отвечать той сущности, которую требуется получить на выходе. Если нужен один PDF на заказ, код клиента недостаточен: один клиент может иметь несколько заказов. Код клиента лучше оставить Macro Tag, а границу строить по уникальному номеру заказа.
Для акта с приложениями важно проверить, повторяется ли номер акта на приложениях. Если нет, условие изменения текста может увидеть в той же позиции другой элемент. В таких формах иногда надёжнее искать постоянный маркер начала нового акта. Выбор нельзя делать по названию документа — он определяется фактическим расположением текста на страницах.
При изменении формы поставщика не следует компенсировать всё огромным Position Deviation. Чем шире разрешённая область, тем выше шанс захватить соседний реквизит. Если новая форма систематически печатает номер в другом месте, отдельное правило точнее и проще в сопровождении.
Сценарий: главы и секции отчёта
Если большой отчёт содержит главы с номером в постоянной области, этот номер можно использовать как Split Tag. Такой подход не зависит от наличия PDF-закладок. Когда номер главы повторяется в колонтитуле на всех страницах раздела, подходит изменение текста; когда заголовок появляется только в начале, проверяют условие нахождения текста.
Название главы удобно вынести в Macro Tag и включить в имя, а числовой номер оставить ключом границы. Это снижает зависимость от длинных заголовков. Если текст переносится на две строки, для имени может потребоваться нормализация или Multi-line Tag, но границу всё равно лучше строить по более компактному устойчивому полю.
Нужно проверить, не повторяется ли выбранный маркер в содержании таблицы. Координатная привязка уменьшает вероятность ложного срабатывания: одно и то же слово в середине страницы не мешает правилу, которое читает только область заголовка.
Сценарий: классификация по числовому значению
Transform позволяет превратить найденное печатное значение в вычисляемую категорию. В официальной базе знаний показан подход с суммой: из строки удаляются символы оформления, значение преобразуется в число и затем сравнивается с порогом. В результате Split Tag может представлять не исходную сумму, а категорию, определяемую правилом.
Такой сценарий требует безопасного преобразования. Если поле пустое или числовой формат изменился, вариант функции со значением по умолчанию помогает избежать неконтролируемой ошибки, но бизнес-смысл значения по умолчанию всё равно должен быть проверен. Разделители тысяч и дробной части также нельзя предполагать неизменными, если документы приходят из разных систем.
Числовой Transform имеет смысл, когда нужно группировать документы по вычисляемому признаку. Для обычного отделения каждого счёта это лишний слой логики: полный уникальный номер проще и проверяемее.
PDF после OCR и Multi-line Tag
A-PDF Content Splitter опирается на текст внутри PDF. Страница, состоящая только из изображения, не даёт строк для координатного сравнения. Если скан предварительно распознан и содержит текстовый слой, его можно использовать, но качество OCR становится частью надёжности правила.
Официальная база знаний описывает Multi-line Tag для случаев, когда текст после OCR извлекается не как удобное одиночное слово или строка. Область можно расширить так, чтобы получить нужный фрагмент целиком. После этого его разрешается использовать в логике или в шаблоне имени по тем же принципам, что и другие теги.
Широкая область должна оставаться достаточно узкой, чтобы не захватывать соседние подписи. Если OCR вставляет лишние пробелы или переносы, Transform помогает нормализовать строку. Но сценарий не способен восстановить правильный номер, если движок OCR систематически перепутал цифру и букву; такой исходник нужно исправить на этапе распознавания.
Простой предварительный тест — попробовать выделить и скопировать идентификатор в PDF-просмотрщике. Если копируется ожидаемая строка, основа для правила есть. Если выделение невозможно или вставляется бессмысленная последовательность, сначала требуется улучшить текстовый слой.
Экспорт, импорт и резервные копии правил
Правила можно экспортировать и импортировать. Это полезно не только для переноса на другой компьютер, но и для безопасного изменения конфигурации. Перед правкой координат, сценариев или условий стоит сохранить рабочий вариант, чтобы при неудачном эксперименте не восстанавливать его вручную.
При смене формы лучше создавать новую конфигурацию под новым именем, а не перезаписывать единственный рабочий вариант. Старые документы могут продолжать поступать вместе с новыми, и две отдельные схемы легче проверить. Название правила должно отражать источник или форму и ключевой реквизит, а не только общую тему вроде Invoices.
Перенос .rul не гарантирует совместимость с любым визуально похожим PDF. Координаты относятся к внутреннему расположению текста. После импорта нужно открыть контрольный документ в новой среде, выполнить тест и сравнить границы с ожидаемыми.
Запуск внешней программы после разделения
В параметрах предусмотрен вызов внешней исполняемой программы после создания результата. Для каждой выходной части можно передать её имя через %1. Также описан вариант запуска после обработки исходного PDF с передачей каталога результата. Такой механизм позволяет связать разделение с последующим индексированием, копированием или другой обработкой.
Подключать внешний этап лучше после того, как само правило разделения уже стабильно. Иначе ошибка границ распространяется дальше по цепочке, а диагностика усложняется. При первом тесте полезно использовать безопасную вспомогательную команду, которая только фиксирует переданный путь, и убедиться, что пробелы и специальные символы обрабатываются правильно.
Журнал A-PDF Content Splitter подтверждает собственный этап, но не гарантирует успех внешней программы. Если дальнейшее действие важно, оно должно вести отдельный журнал или возвращать проверяемый код завершения.
Что A-PDF Content Splitter не заменяет
Программа не выполняет распознавание сканов сама: для изображения без текстового слоя сначала нужен OCR. Она также не понимает семантику документа автоматически. Если пользователь отметил область с номером страницы вместо номера счёта, программа добросовестно применит это значение; смысл реквизита задаётся конфигурацией.
Это не инструмент для визуальной правки текста, удаления объектов или свободной перестановки страниц. Не его задача и геометрически разрезать одну широкую страницу на две половины. Специализация — определить границы выходных PDF по тексту, положению и сохранённой логике.
Для простого деления каждые N страниц, извлечения известного диапазона или работы по закладкам контентное правило может быть избыточным. Оно оправдано, когда длина логических документов меняется, а устойчивый текстовый признак позволяет определить переход.
Сравнение A-PDF Content Splitter с аналогами
| Программа | Лучше подходит для | Главное ограничение |
|---|---|---|
| A-PDF Content Splitter | Серийных PDF с идентификатором в фиксированной области, сохранённых правил, Macro Tag и сценариев | Нужен доступный текстовый слой и достаточно стабильный макет |
| PDFsam Visual | Визуального разбиения при изменении текста в выбранной области на Windows, macOS и Linux | Логика ориентирована на визуальную операцию разделения, без набора Split Tag и Pascal-сценариев A-PDF |
| PDF Content Split SA | Windows-процессов с поиском текста, шаблонами, пакетной обработкой и предварительным OCR | Большое количество параметров требует внимательной настройки рабочего процесса |
| Sejda Split PDF by Text | Разовой операции в браузере с выбором области и текстового признака | Бесплатный режим ограничивает размер и число заданий |
| VeryPDF PDF Content Splitter | Пакетного разделения по одинаковому или различающемуся тексту через GUI или командную строку | Нужно отдельно выбрать подходящий режим и проверить его на конкретной структуре PDF |
Практический выбор зависит от структуры входных документов. Если форма стабильна и требуется один раз точно описать координаты, сохранять правила, формировать имена из нескольких полей и при необходимости преобразовывать теги сценарием, A-PDF Content Splitter соответствует такой схеме. PDFsam Visual удобнее рассматривать для визуального выбора области на разных операционных системах, PDF Content Split SA — когда важен встроенный этап OCR и расширенная текстовая обработка, Sejda — для эпизодической задачи без постоянной очереди, VeryPDF — как ещё один вариант пакетного деления по текстовому признаку.
Типичные ошибки и способы исправления
Новый файл создаётся почти на каждой странице
Проверьте сам Split Tag. В режиме изменения текста значение должно оставаться одинаковым на всех страницах одного логического блока. Если в отмеченной области находится номер страницы, текущая дата или другой постоянно меняющийся реквизит, программа закономерно видит новую границу. Выберите идентификатор сущности, который повторяется до конца её блока.
Нужная граница пропускается
Сначала проверьте текстовый слой, затем положение поля. Если значение копируется как текст, сравните координаты на пропущенной странице с образцом. Небольшой сдвиг компенсируется Position Deviation X/Y; крупное систематическое смещение обычно означает другой шаблон, для которого лучше отдельное правило.
В область попадает подпись поля
Выделяйте динамическое значение, а не постоянную надпись вроде Invoice No. Подпись одинаковая у всех записей и редко годится для режима изменения текста. Если подпись расположена вплотную к номеру, уменьшите область, уточните координаты и выравнивание.
Macro Tag остаётся пустым
Проверьте, с какой страницы он читается: Current page, следующая N-я страница или связанный диапазон части. Затем проверьте координаты, допуск и Validate. Ошибка часто проявляется только на одностраничных документах, если правило ожидает поле на следующей странице.
В имени остаётся служебный префикс
Если границы правильные, очищайте именно Macro Tag или Script for Output Filename. Trim удаляет пробелы по краям, а функции замены позволяют убрать фиксированный фрагмент. Не меняйте Split Tag без необходимости, иначе корректное разделение может измениться.
Два результата получают одинаковое имя
Добавьте в Filename pattern {basename}, {part}, диапазон страниц или другой уникальный тег. При пакетной очереди можно также создавать отдельную папку для каждого исходного PDF. Уникальность нужно проверять на всей партии, а не на одном образце.
Скан не делится по номеру
Убедитесь, что номер существует как текст. Если его нельзя выделить в просмотрщике, сначала выполните OCR. После распознавания проверьте ошибки похожих символов и переносы. При сложной структуре текстового слоя можно использовать Multi-line Tag.
Продолжение счёта уходит в другой файл
Посмотрите, что находится в области Split Tag на промежуточных страницах. Если номер счёта там отсутствует или OCR читает его иначе, режим изменения текста видит новое значение. Нужен повторяющийся ключ, маркер начала или проверка, исключающая недопустимые значения.
Несмежные фрагменты одного ключа остаются раздельными
Если по бизнес-логике их действительно нужно объединить, проверьте режим find different text and group. До включения убедитесь, что ключ уникален в пределах партии и пустые значения не могут образовать ложную общую группу.
После группировки объединились разные документы
Выбранный ключ недостаточно уникален. Один номер клиента, например, не разделяет разные заказы клиента. Используйте идентификатор требуемой сущности или не включайте Group. Группировка должна отражать реальную связь между фрагментами, а не просто совпадение текста.
В очередь попали разные формы
Разделите файлы по шаблонам и примените отдельные правила. Координатная конфигурация не определяет тип формы автоматически. Даже похожие счета разных систем могут печатать ключ в другом месте или иметь иной размер страницы.
Не удаётся создать выходной каталог
Проверьте существование родительского пути, права записи и доступность сетевого ресурса. Для PCSCMD код 6 означает невозможность создать каталог. Для диагностики используйте простой локальный путь, затем возвращайте рабочую директорию.
PCSCMD возвращает код 2
Код 2 означает отсутствие входного файла. Проверьте полный путь, текущий каталог и кавычки вокруг пути с пробелами. Это не ошибка правила: отсутствующий .rul обозначается другим кодом.
PCSCMD возвращает код 3
Код 3 указывает, что файл правила не найден. Проверьте имя .rul и путь к нему. В автоматизации лучше использовать абсолютные пути, чтобы запуск из другой рабочей папки не менял расположение ожидаемых ресурсов.
PCSCMD возвращает код 4
Код 4 относится к загрузке PDF. Проверьте, открывается ли файл, не повреждён ли он и не требуется ли пароль. Если PDF защищён, передайте корректное значение через предусмотренный параметр.
PCSCMD возвращает код 5
Код 5 означает ошибку этапа разделения. Повторите тот же файл и правило в графическом интерфейсе, где журнал позволяет увидеть больше контекста. Проверьте также каталог вывода и корректность самого .rul.
Validate отбрасывает корректный номер
Проверка работает с результатом после Transform. Если преобразование удалило часть строки или изменило регистр, условие Validate должно учитывать новый вид. На время диагностики упростите Transform и сравните фактический тег с ожидаемым.
Transform делает разные номера одинаковыми
Слишком сильное обрезание уничтожает уникальную часть. Например, первые три символа годятся только тогда, когда именно они определяют нужную категорию. Для разделения по полному номеру преобразование должно очищать, а не сокращать идентификатор.
Hot Directory использует неподходящее правило
Проверьте связь конкретного Monitored Directory с выбранной конфигурацией. Для разных форм используйте разные папки. Не рассчитывайте, что одно координатное правило автоматически распознает источник документа.
Журнал показывает успех, но результат неверен
Техническое завершение не проверяет смысл границ. Сверьте количество частей, переходы между идентификаторами, имя каждого выбранного результата и при необходимости метаданные. Новый или изменённый .rul всегда требует ручной контрольной выборки.
Старые и новые тестовые файлы смешались
Перед повторной попыткой очищайте каталог или создавайте новый. Иначе невозможно уверенно определить, какое правило сформировало конкретную часть. Отдельные тестовые папки особенно полезны при неизменном Filename pattern.
Правило сломалось после изменения формы
Сравните размер страницы, положение поля и фактический текст. Если источник изменил шаблон, сохраните прежнюю конфигурацию и создайте новый вариант. Расширять X/Y до огромной области хуже, чем обслуживать две понятные формы отдельно.
Имя корректно на большинстве файлов, но иногда пустое
Найдите отличие именно в Macro Tag: на какой странице находится поле, меняется ли его положение, проходит ли оно Validate. Разделение и именование диагностируются независимо; правильные границы не подтверждают правильность дополнительного тега.
В имени появляются неожиданные пробелы
Проверьте текст, который реально извлекается из PDF. В некоторых документах визуально единая строка содержит дополнительные пробелы. Для Macro Tag или сценария имени можно использовать Trim и замену повторяющихся разделителей, не меняя условие границы.
Короткие номера читаются, длинные — нет
Проверьте Samples Align и размеры области. Если поле выровнено справа, длинный номер сильнее уходит влево. Правильная привязка к правому краю часто надёжнее, чем механическое увеличение Position Deviation.
Тег с OCR содержит переносы
Используйте Multi-line Tag или нормализацию строки, если текстовый слой действительно разбивает значение. Сначала посмотрите, какие символы извлекаются фактически; нельзя проектировать Transform только по внешнему виду страницы.
Пошаговая настройка нового правила
- Выберите несколько реальных PDF одного шаблона, включая одностраничный и многостраничный логический документ.
- Определите, что именно должно стать одним выходным PDF: счёт, заказ, сотрудник, глава или другой объект.
- Найдите текстовый идентификатор, который однозначно соответствует этому объекту.
- Проверьте в просмотрщике, что идентификатор выделяется и копируется как текст.
- Убедитесь, повторяется ли ключ на каждой странице блока или присутствует только в начале.
- Откройте типичный Sample PDF и перейдите к странице с хорошо видимым ключом.
- Выделите именно значение, а не постоянную подпись поля, и добавьте его в Split Tag List.
- Проверьте исходные координаты на нескольких страницах прежде, чем менять допустимое отклонение.
- Настройте Samples Align по реальному выравниванию поля: слева, по центру или справа.
- Выберите условие: изменение текста, нахождение текста или изменение с группировкой.
- Если исходная строка содержит лишнее оформление, добавьте минимальный Transform.
- Если в области возможен посторонний текст, добавьте Validate с проверяемым условием.
- Дайте правилу уникальное имя, из которого понятна форма и ключевой реквизит.
- Сформируйте Filename pattern и предусмотрите уникальность результатов.
- Добавьте Macro Tag только для реквизитов, которые нужны в имени или свойствах.
- Проверьте страницу, с которой читается каждый Macro Tag, на коротком и длинном блоке.
- Если начало или конец отчёта не относится к серийным документам, настройте диапазон страниц.
- Заполните Title, Subject, Author и Keywords только при реальной необходимости.
- Укажите отдельную тестовую папку вывода и не смешивайте её с исходниками.
- Запустите один PDF и сравните количество частей с ожидаемым числом объектов.
- Откройте первую, среднюю и последнюю часть и проверьте их границы.
- Отдельно проверьте переход между двумя соседними идентификаторами.
- Проверьте самое длинное и самое короткое допустимое значение ключа.
- Проверьте пустое или необычное значение, если оно встречается в реальном потоке.
- Сверьте имя выходного PDF с видимым Split Tag и Macro Tag внутри файла.
- Сохраните журнал успешной контрольной операции.
- Экспортируйте проверенное правило перед дальнейшими изменениями.
- Только после контрольной выборки добавляйте весь каталог входных файлов.
- Для Hot Directory сначала имитируйте поступление нескольких тестовых PDF.
- Для PCSCMD проверяйте код возврата после каждого запуска.
Как проверять правило на контрольной выборке
Один успешный документ не подтверждает устойчивость правила. Контрольная выборка должна содержать естественные крайние случаи одного шаблона: минимальное и максимальное число страниц на запись, короткий и длинный идентификатор, разные даты, первую и последнюю запись партии. Если в реальном потоке встречаются защищённые PDF или результаты OCR, их тоже следует включить.
Сначала сравнивают количество ожидаемых объектов с количеством выходных файлов. Затем вручную проверяют несколько границ: последняя страница одного результата должна относиться к тому же ключу, а первая страница следующего — уже к новому. При режиме Group дополнительно убеждаются, что несмежные фрагменты одинакового ключа объединились и никакой другой объект не попал в группу.
Следующий уровень — имя и свойства. Filename pattern может быть синтаксически корректным, но создавать неудобные или совпадающие имена. Macro Tag может прочитать соседнее поле, хотя Split Tag разделил страницы правильно. Поэтому содержимое, имя и метаданные проверяются как три независимых результата одной операции.
Если правило изменяется, контрольный набор нужно запускать повторно целиком. Даже маленькое увеличение X/Y способно исправить одну страницу и одновременно захватить соседнее поле на другой. Такой регрессионный тест гораздо надёжнее, чем оценка только того файла, на котором была замечена ошибка.
Диагностика по слоям
Удобно разбирать проблему в фиксированном порядке. Первый слой — сам PDF: файл открывается, пароль известен, нужный реквизит существует как текст. Второй — геометрия: значение попадает в выбранную область при заданных X/Y и выравнивании. Третий — Transform: найденная строка преобразуется так, как задумано. Четвёртый — Validate: корректный результат принимается, ошибочный отбрасывается.
Пятый слой — условие разделения. Здесь проверяют, соответствует ли изменение или нахождение тега реальной границе логического документа и нужна ли группировка. Шестой слой — Filename pattern, Macro Tag и свойства PDF. Седьмой — каталог вывода, журнал и внешняя постобработка. Такой порядок не позволяет маскировать первичную ошибку настройками другого уровня.
Например, если Split Tag пуст, бессмысленно менять шаблон имени. Если текст найден, но Validate возвращает false, увеличение X/Y может не требоваться. Если страницы разделены правильно, а имя неверно, нельзя менять Trigger. Каждая наблюдаемая ошибка имеет свой уровень настройки, и это существенно ускоряет поиск причины.
Безопасное построение имён файлов
Имя результата должно быть коротким, понятным и уникальным. Практичная основа — сочетание {basename}, {splittag} и при необходимости {part:0000}. Исходное имя сохраняет контекст партии, ключ объясняет содержимое, последовательный номер защищает от части коллизий. Для диагностики временно можно добавить диапазон страниц.
Если в имя включается Macro Tag, проверьте максимальную длину и возможные символы. Длинный текст из нескольких строк неудобен для файловой системы; такой реквизит лучше сократить Transform или оставить только в свойствах PDF. Сценарий имени должен также учитывать пустое значение и не строить итоговую уникальность только на необязательном поле.
Бизнес-дата внутри документа и дата обработки — разные сущности. Скриптовые функции даты позволяют добавить текущую дату, но это не заменяет реквизит документа. Если архив должен сортироваться по периоду счёта, используйте распознанное поле периода; если нужна отметка момента обработки, это уже отдельная информация.
Несколько правил для разных форм
В организациях часто встречается несколько внешне похожих форм: счета разных поставщиков, отчёты разных филиалов, разные версии выгрузки из одной системы. Координатный подход делает различия принципиальными. Если ключ находится в другой колонке или на странице другого размера, лучше иметь отдельный .rul, чем одно правило с чрезмерно широким допуском.
Полезная схема именования правил включает тип документа, источник и ключ. Экспортированный .rul стоит хранить рядом с тестовым PDF и кратким описанием ожидаемого результата. Тогда новый сотрудник может проверить конфигурацию без догадок, а при изменении формы легко сравнить старый и новый варианты.
Для Hot Directory такой порядок превращается в явную маршрутизацию: каждой отслеживаемой папке соответствует понятный класс документов. Если новый источник ещё не проверен, его не следует отправлять в существующую автоматическую папку только потому, что документ называется счёт.
Работа с несколькими тегами
Сложная форма может содержать несколько полезных реквизитов, но не каждый из них должен влиять на границу. Split Tag следует выбирать по вопросу что определяет один выходной документ, а Macro Tag — по вопросу какая дополнительная информация нужна для имени или свойств. Это разделение делает правило понятным и уменьшает зависимость от необязательных полей.
Если один код клиента повторяется у нескольких заказов, он плох как единственный Split Tag для задачи один заказ — один PDF, но хорош как дополнительный Macro Tag. Если номер заказа уникален, именно он является естественным ключом границы. Аналогично фамилия сотрудника полезна для читаемого имени, а уникальный табельный номер — для разделения.
Не стоит добавлять несколько почти одинаковых областей одного ключа ради страховки. Лучше точно настроить одну позицию, выравнивание и допуск. Если требуется отсеять постороннее значение, Validate обычно даёт более прозрачную логику, чем дублирующий тег.
Совместимость с текстовым слоем PDF
Для работы правила важнее не способ отображения страницы, а то, как хранится текст. PDF может выглядеть идеально и при этом содержать номер как изображение или набор контуров. В таком документе координатное текстовое правило не получает строку. Предварительная проверка копированием текста помогает быстро отделить такую проблему от ошибки настройки.
После OCR тоже возможны особенности: символы идут в неожиданном порядке, между буквами появляются пробелы, строка разбивается на несколько фрагментов. Multi-line Tag и Transform помогают работать с некоторыми такими представлениями, но качество распознавания остаётся исходным ограничением. Критичный числовой идентификатор следует сверять по фактически извлечённой строке.
Размер страницы и внутренние координаты также имеют значение. PDF после повторной печати может визуально повторять оригинал, но размещать текст иначе. Если рабочий поток включает и прямой экспорт, и виртуальную печать, эти два варианта нужно протестировать как отдельные источники.
Когда контентное разделение не нужно
Если границы известны заранее — например, каждый документ всегда занимает ровно две страницы, нужен диапазон 15–30 или отдельный файл на каждую страницу — проще использовать обычное разделение по номерам. Контентное правило добавляет зависимость от текста и координат без пользы.
Если точка разделения задаётся штрихкодом, пустой страницей или PDF-закладкой, специализированный инструмент для соответствующего признака будет понятнее. Если задача состоит в геометрическом разрезании одного листа, это вообще другой тип операции. A-PDF Content Splitter полезен именно там, где граница выводится из печатного текста в документе.
Если идентификатор свободно перемещается по странице и отсутствует стабильная область, координатная модель становится хрупкой. В таком случае стоит выбирать решение с поиском по всей странице, OCR-классификацией или другой логикой, соответствующей реальной структуре входных данных.
Проверка результата перед передачей пользователю
После массового запуска открывайте не только первый результат. Выберите несколько файлов из начала, середины и конца партии, а также самые короткие и длинные по количеству страниц. Убедитесь, что последняя страница каждого блока действительно относится к его ключу и что следующая запись не присоединилась к предыдущей.
Сопоставьте имя файла с видимыми реквизитами. Если используются свойства PDF, откройте их и проверьте Title, Subject, Author и Keywords. Ошибка в метаданных может не мешать чтению файла, но затем ухудшить поиск или автоматическую маршрутизацию.
Сохранение исходного PDF и журнала делает проверку воспроизводимой. Если через несколько дней обнаружится неправильная часть, можно восстановить страницу границы, применить изменённый .rul к тому же исходнику и сравнить результаты. Без оригинала невозможно надёжно доказать, где возникла ошибка.
Функции, доступные в сценариях
Редактор сценариев предоставляет набор строковых, числовых и календарных функций. Их назначение — преобразовать уже найденное значение или проверить его, а не искать текст по всей странице. Чем проще задача, тем меньше функций стоит задействовать: короткий сценарий легче проверить на контрольной выборке и сопровождать при изменении формы.
| Группа | Примеры | Практическое применение |
|---|---|---|
| Регистр и сравнение | UpperCase, LowerCase, CompareStr, CompareText, SameText | Нормализация и сравнение строк с учётом или без учёта регистра |
| Пробелы | Trim, TrimLeft, TrimRight | Очистка значения перед сравнением или подстановкой в имя |
| Числа | IntToStr, StrToInt, StrToIntDef, StrToFloat, StrToFloatDef | Проверка числового кода и преобразование суммы или другого числа |
| Логические значения | StrToBool, StrToBoolDef, BoolToStr | Работа с логическим результатом в пользовательской проверке |
| Дата и время | Date, Time, Now, EncodeDate, EncodeTime, DateToStr, TimeToStr | Формирование или проверка календарного значения в сценарии |
| Поиск и замена | StringReplace, AnsiContainsText, AnsiStartsText, AnsiEndsText, AnsiReplaceText | Удаление префикса и проверка фрагмента строки |
| Части строки | LeftStr, RightStr, MidStr, ReverseString, PosEx | Извлечение устойчивого участка идентификатора |
| Пути | ExtractFilePath, ExtractFileDir, ExpandFileName, IncludeTrailingPathDelimiter | Формирование путей в сценарии имени, когда это действительно требуется |
Наличие функции в списке не означает, что её нужно обязательно применять. Если Split Tag уже содержит чистый уникальный номер, буквальное сравнение надёжнее сложного Transform. Сценарий оправдан тогда, когда без него входная строка систематически содержит ненужный префикс, разный регистр, форматированное число или другой предсказуемый шум.
Примеры настройки для разных документов
Банковская выписка
Для формы Банковская выписка в качестве Split Tag можно использовать номер счёта, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить дату периода; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что один счёт может повторяться в разных периодах, поэтому для группировки нужен дополнительный контекст.
Контроль для Банковская выписка должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области номер счёта, затем выбранный Trigger, после этого — дату периода в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Страховой пакет
Для формы Страховой пакет в качестве Split Tag можно использовать номер полиса, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить фамилию страхователя; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что фамилия может совпадать у разных людей, поэтому она подходит для имени, но не всегда для границы.
Контроль для Страховой пакет должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области номер полиса, затем выбранный Trigger, после этого — фамилию страхователя в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Реестр доставок
Для формы Реестр доставок в качестве Split Tag можно использовать номер отправления, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить город назначения; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что штрихкод как изображение сам по себе не заменяет текстовый идентификатор.
Контроль для Реестр доставок должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области номер отправления, затем выбранный Trigger, после этого — город назначения в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Учебная ведомость
Для формы Учебная ведомость в качестве Split Tag можно использовать код группы или ведомости, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить название дисциплины; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что семестр или период следует учитывать, если один код используется повторно.
Контроль для Учебная ведомость должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области код группы или ведомости, затем выбранный Trigger, после этого — название дисциплины в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Акт выполненных работ
Для формы Акт выполненных работ в качестве Split Tag можно использовать номер акта, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить контрагента; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что приложения нужно проверить отдельно, если на них номер акта не повторяется.
Контроль для Акт выполненных работ должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области номер акта, затем выбранный Trigger, после этого — контрагента в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Сервисный отчёт
Для формы Сервисный отчёт в качестве Split Tag можно использовать номер заявки, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить серийный номер оборудования; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что номер страницы не должен попадать в область ключа.
Контроль для Сервисный отчёт должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области номер заявки, затем выбранный Trigger, после этого — серийный номер оборудования в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Платёжный реестр
Для формы Платёжный реестр в качестве Split Tag можно использовать идентификатор платежа, если он печатается в стабильной области и соответствует одному выходному документу. Дополнительным Macro Tag может служить дату; он делает имя информативнее, не меняя саму границу. Перед запуском необходимо учитывать, что пустые строки и итоговые строки нужно исключать через выбор области или Validate.
Контроль для Платёжный реестр должен включать несколько соседних записей и хотя бы одну запись максимальной длины. Сначала проверяют фактический текст в области идентификатор платежа, затем выбранный Trigger, после этого — дату в имени или свойствах. Если форма имеет вариант с другим размером страницы или расположением полей, его тестируют отдельно, а не считают автоматически совместимым.
Как сопровождать правило после внедрения
Проверенный .rul стоит рассматривать как конфигурацию рабочего процесса. Сохраните экспортированную копию, тестовый PDF и короткое описание: какая форма поддерживается, какое поле является Split Tag, какой Trigger выбран, какие Macro Tag используются и сколько частей должно получиться из контрольного файла. Эти данные позволяют быстро понять назначение правила без открытия каждого параметра.
При изменении формы не редактируйте единственную рабочую копию без резервирования. Сначала сделайте новый вариант, прогоните прежний контрольный набор и отдельно проверьте новый PDF. Если оба шаблона продолжают использоваться, сохраните обе конфигурации и разведите входные потоки. Это надёжнее попытки сделать одно правило одинаково терпимым ко всем геометрическим вариантам.
Для автоматического запуска полезно отслеживать косвенные признаки изменения формы: неожиданное число выходных файлов, пустые имена, новые ошибки загрузки, код возврата PCSCMD или необычные записи журнала. Эти сигналы не заменяют проверку содержимого, но позволяют заметить проблему раньше, чем ошибочно разделённая партия попадёт в дальнейший процесс.
Практическая схема приёмки
Первый этап — входные данные. PDF должен открываться, при необходимости принимать известный пароль, а ключевой реквизит — копироваться как текст. Затем проверяется геометрия: отмеченная область содержит именно значение, а не подпись, и остаётся пригодной для коротких и длинных вариантов. Только после этого имеет смысл настраивать Transform и Validate.
Второй этап — логика. Выбранный Trigger должен соответствовать тому, как ключ появляется на страницах: повторяется до смены, встречается только в начале или требует объединения одинаковых значений. Затем проверяются Macro Tag, шаблон имени, свойства и диапазон страниц. Каждая часть результата сопоставляется с исходными страницами.
Третий этап — эксплуатация. Успешное правило экспортируется, журнал сохраняется, а пакетный режим проверяется на небольшой группе. После этого можно переходить к добавлению каталога, Hot Directory или PCSCMD. При любой существенной правке координат, сценария или условия весь контрольный набор прогоняется снова.
Итог
A-PDF Content Splitter подходит для потока, где один большой PDF содержит много логических документов разной длины, а их можно отличить по тексту в устойчивом месте страницы. Визуальный редактор позволяет отметить поле на образце, выбрать условие изменения или нахождения текста, настроить координатный допуск, добавить Macro Tag и сформировать имя результата из встроенных макросов.
Для сложных форм доступны Transform и Validate на Pascal-сценариях, ограничение диапазона страниц, свойства PDF, внешняя постобработка, пакетный список, журнал, Hot Directory и PCSCMD. Эти возможности особенно полезны после того, как базовая логика проверена на реальных образцах и сохранена как отдельное правило.
Главное ограничение следует из самого метода: программа зависит от текстового слоя и расположения реквизита. Сканы сначала требуют OCR, а разные шаблоны лучше обслуживать разными конфигурациями. Если эти условия соблюдены и контрольная выборка подтверждает границы, повторяющееся разделение счетов, ведомостей, заказов и отчётов можно выполнять без ручного подсчёта страниц.