Excalibur

Excalibur помогает извлекать таблицы из текстовых PDF: загрузить документ, указать страницы, автоматически найти табличные области или обвести их вручную, выбрать режим Lattice для таблиц с линиями либо Stream для разметки пробелами, проверить полученные строки и выгрузить результат в CSV, Excel, JSON или HTML. Рабочая область позволяет уточнять границы, добавлять разделители столбцов и сохранять правило, чтобы повторять одинаковую обработку на документах с похожим макетом.

Работа строится вокруг трёх экранов. На странице Files выбирают PDF и задают диапазон страниц, в Workspace видят растровое представление каждой выбранной страницы и настраивают области таблиц, а на странице результата просматривают найденные ячейки и выбирают формат выгрузки. Верхнее меню также ведёт к Rules с сохранёнными схемами извлечения и Jobs с историей выполненных заданий.

Лучший результат получается на документах, где текст выделяется мышью, строки и столбцы сохраняют стабильные координаты, а таблица не является фотографией. Excalibur не выполняет OCR, не исправляет содержимое PDF и не превращает ошибочно распознанные ячейки в полноценный редактор таблиц: качество определяется текстовым слоем, геометрией страницы, выбранным методом и точностью рамок.

Скачать Excalibur

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Excalibur
Оценка 8.5
  • Нет встроенного OCR
  • Интерфейс на английском
  • Нет редактора PDF
Скачать Excalibur
Загрузка начнётся после нажатия

От загрузки PDF до готовой таблицы

Сеанс начинается на вкладке Files. Поле выбора принимает PDF, а соседняя строка Page numbers ограничивает объём обработки. Допустимы одиночные номера, перечисления через запятую, интервалы и обозначение конца документа: можно задать одну страницу, несколько разрозненных листов, диапазон или все страницы. Это важнее, чем кажется: предварительное ограничение не только сокращает ожидание, но и не даёт страницам без таблиц создавать ложные области и пустые результаты.

После отправки файла Excalibur разделяет выбранные страницы и готовит изображения для рабочей области. Пока преобразование не закончено, вместо редактора показывается состояние Processing. Затем открывается Workspace с именем файла, миниатюрами слева, крупным листом в центре, кнопками управления сверху и панелью Advanced справа. Такая компоновка позволяет одновременно видеть документ, выбранный метод и геометрию будущей таблицы.

Дальнейшая последовательность проста: проверить страницу, найти таблицу автоматически либо обвести её, выбрать Lattice или Stream, при необходимости добавить вертикальные разделители и запустить View and Download Data. Результат появляется как HTML-таблица. Если строки или столбцы смещены, надо вернуться в Workspace, изменить рамку или параметры и запустить задание снова; ручное исправление значений в окне результата не предусмотрено.

  1. Выберите PDF и укажите только нужные страницы.
  2. Проверьте, выделяется ли текст в исходном документе.
  3. Откройте Workspace и выберите способ определения области.
  4. Укажите Flavor: Lattice для сетки или Stream для пробельной структуры.
  5. Просмотрите извлечённые ячейки до скачивания.
  6. Сохраните удачную настройку как правило для похожих файлов.

Экран Excalibur для загрузки PDF и выбора страниц

Экран Files и повторная работа с документами

Верхняя часть Files содержит область Upload PDF и строку страниц. Под ней находится Previous Uploads — таблица ранее загруженных документов. Для каждой записи видны порядковый номер, имя файла и время загрузки. Кнопка Extract Again возвращает документ в рабочую область, а Download открывает результат последнего связанного задания, если такое задание уже было создано.

Список полезен при итеративной настройке. Не нужно повторно выбирать один и тот же PDF после каждой неудачной попытки: откройте его через Extract Again, измените рамки или Advanced и запустите извлечение заново. При этом важно различать файл и задание. Одна запись файла может использоваться в нескольких попытках, а Jobs хранит отдельные результаты. Поэтому перед передачей таблицы коллегам лучше проверить дату и параметры именно того задания, из которого скачивается файл.

Поле Pages сохраняется вместе с записью загруженного PDF. Если в первом сеансе были выбраны только страницы 5–8, в Workspace не появятся остальные листы. Когда позже понадобилась страница 9, безопаснее загрузить документ ещё раз с новым диапазоном, чем ожидать, что редактор подгрузит отсутствующий лист. Для длинных отчётов полезно создавать несколько записей по смысловым диапазонам: баланс, отчёт о движении средств, приложения и примечания.

Имена файлов проходят очистку перед сохранением. Однако удобство каталога зависит от исходного названия: одинаковые имена из разных папок трудно различать в Previous Uploads. До загрузки стоит добавлять к имени период, организацию или тип отчёта. Это не влияет на распознавание, но уменьшает риск скачать результат не от того документа.

Как читать рабочую область

Workspace показывает миниатюры выбранных страниц в левой колонке. Нажатие на миниатюру переводит к соответствующему крупному изображению в центральной области. При многостраничной обработке это быстрее, чем прокручивать весь документ и угадывать номер листа. Под миниатюрой указан номер страницы исходного PDF, поэтому сохранённое правило и полученный файл можно сопоставить с первоисточником.

Над страницами расположены Select Saved Rule, Autodetect Tables, Clear Tables и View and Download Data. Первая команда подставляет ранее сохранённую схему, вторая запускает автоматический поиск областей, третья удаляет нарисованные прямоугольники, а четвёртая создаёт задание извлечения. Clear Tables особенно полезна после неудачного автопоиска: вместо попытки исправлять несколько лишних рамок можно очистить всё и разметить только нужную таблицу.

Центральное изображение является рабочей проекцией PDF, а не редактором страницы. Рамка определяет координаты, которые будут переданы механизму извлечения. Она не обрезает оригинал, не удаляет колонтитулы из файла и не меняет документ. Поэтому ошибочную область всегда можно убрать и нарисовать заново без риска повредить PDF.

Панель Advanced меняет набор полей после выбора Flavor. Lattice показывает настройки линий, Stream — допуски группировки текста. Разделители столбцов добавляются кнопкой Add column только для активной области. Из-за узкой боковой панели длинные пояснения читаются небольшим шрифтом; при работе на маленьком экране удобнее увеличить ширину окна браузера, а не масштаб страницы, иначе координаты рамок визуально становятся труднее контролировать.

Рабочая область Excalibur с выбранной страницей и панелью Advanced

Автоматическое определение таблиц

Autodetect Tables пытается найти на странице прямоугольники, соответствующие таблицам. Это хороший первый шаг для документов с явной сеткой: финансовых форм, статистических бюллетеней, ведомостей и отчётов, где границы ячеек заметны. Найденные области сразу отображаются поверх страницы. Пользователь видит, какую часть документа Excalibur собирается анализировать, и может оценить рамку до запуска тяжёлого этапа извлечения.

Автопоиск не следует воспринимать как окончательное решение. Линия под заголовком, рамка вокруг примечания, несколько тесно расположенных блоков или декоративная сетка могут быть приняты за таблицу. Обратная ошибка тоже возможна: таблица без внешней рамки останется незамеченной. После Autodetect Tables обязательно сравните каждую область с реальными границами данных и удалите лишнее.

Автоматическая рамка должна охватывать заголовки столбцов и последнюю строку, но не захватывать номер страницы, сноски и соседний абзац. Если в область попал колонтитул, Stream может превратить его в дополнительную строку, а Lattice иногда создаёт отдельную таблицу. Небольшое сужение рамки обычно полезнее, чем попытка очищать CSV после выгрузки.

При нескольких таблицах на одном листе лучше оставить отдельную область для каждой. Один большой прямоугольник вокруг двух независимых сеток повышает риск склеивания строк, появления пустых столбцов и смешивания заголовков. Отдельные области дают отдельные табличные результаты и позволяют точнее подобрать столбцовые разделители.

Автоматически найденная табличная область в Excalibur

Ручное выделение табличной области

Когда автопоиск ошибается, область рисуют мышью непосредственно на странице. Начальная точка должна находиться чуть выше и левее первой нужной ячейки, конечная — чуть ниже и правее последней. Слишком тесная рамка обрезает символы на краях, а чрезмерно широкая захватывает посторонний текст. Практический запас составляет несколько пикселей в рабочем изображении, но ориентироваться надо по видимым глифам и линиям, а не по условному числу.

Выделенная область затемняется снаружи, а внутри остаётся читаемая таблица. В правом верхнем углу рамки появляется Remove. Это позволяет удалить только один прямоугольник, не затрагивая разметку других страниц. Если граница немного ошибочна, её можно перетащить или изменить размер; при сильной ошибке быстрее удалить и создать заново.

Ручная разметка особенно нужна для таблиц внутри многоколоночной страницы. Без ограничения области Stream может принять соседний текстовый столбец за продолжение таблицы. Для отчёта с примечанием справа рамка должна закончиться перед примечанием, даже если визуально между ними мало пустого пространства. Для таблицы, продолжающейся на следующей странице, создаётся отдельная область на каждом листе.

Выбор области не задаёт структуру столбцов сам по себе. Он только ограничивает анализ. Если пробелы внутри рамки неоднозначны, после её создания добавляют вертикальные разделители. Если линии сетки разорваны, меняют параметры Lattice. Поэтому корректная рамка — обязательная, но не единственная часть настройки.

Lattice: извлечение таблиц с линиями

Flavor Lattice рассчитан на таблицы, где строки и столбцы образованы видимыми линиями. Метод анализирует графические сегменты, находит их пересечения и по сетке восстанавливает ячейки. Он подходит для ведомостей, расписаний, официальных форм и большинства таблиц с полной рамкой. Сильная сторона Lattice — чёткое разделение соседних числовых столбцов даже при небольших пробелах между значениями.

Сначала оставьте настройки по умолчанию и запустите извлечение. Если сетка цельная, дополнительные параметры могут только ухудшить результат. Проверяйте не внешний вид рамки, а таблицу на странице результата: количество столбцов, положение заголовков, сохранность отрицательных знаков, десятичных разделителей и строк итогов. Ошибка в одной строке нередко показывает, что линия была распознана не полностью.

Lattice плохо переносит декоративные линии, подчёркивания внутри ячеек и сетки, нарисованные очень светлым цветом. Горизонтальная черта под названием раздела может стать границей ложной строки. В такой ситуации сузьте область или используйте Stream, если пробелы между столбцами устойчивы. Переключение метода часто даёт больше, чем десяток случайных изменений параметров.

Объединённые ячейки требуют отдельной проверки. Если заголовок охватывает несколько столбцов, в результате текст может оказаться в одной ячейке, а соседние позиции останутся пустыми. Это не всегда ошибка: структура PDF действительно содержит одну текстовую область над несколькими колонками. Перед анализом в Excel полезно нормализовать такие заголовки вручную уже после выгрузки, сохраняя исходный файл для контроля.

Process background

Параметр Process background включает обработку линий, которые визуально находятся на фоне. Он полезен, когда сетка напечатана светло, перекрыта заливкой или представлена фоновыми объектами PDF. Значение следует включать только после проверки обычного режима: фон страницы может содержать рамки, направляющие и декоративные элементы, которые увеличат число ложных границ.

Detect small lines

Поле Detect small lines соответствует масштабу поиска коротких линий. Подсказка интерфейса рекомендует увеличивать значение для обнаружения небольших сегментов и показывает диапазон 15–100. Повышайте параметр постепенно и каждый раз сравнивайте число строк и столбцов. Слишком агрессивное значение способно принять тире, подчёркивания и короткие штрихи за части сетки.

Cut text и Detect superscripts

Cut text разрешает разрезать текст по найденным разделителям столбцов. Это помогает, когда один текстовый объект PDF пересекает вертикальную границу и иначе целиком попадает в одну ячейку. Detect superscripts отмечает верхние и нижние индексы, что полезно для сносок, единиц измерения и научных обозначений. Оба переключателя вводятся как логические значения; после изменения надо заново создать результат, поскольку уже сформированная таблица не пересчитывается автоматически.

Stream: извлечение таблиц по пробелам

Flavor Stream предназначен для таблиц без нарисованной сетки. Он использует координаты текстовых элементов, группирует их в строки и оценивает границы столбцов по устойчивым промежуткам. Такой подход подходит для банковских выписок, отчётов с типографской версткой, перечней и таблиц, где выравнивание заметно, но линии отсутствуют.

Главное условие Stream — стабильная геометрия текста. Если значения в одном столбце выровнены то по левому, то по правому краю, если длинные названия переносятся на следующую строку или между колонками почти нет пустого места, автоматическая структура становится неоднозначной. Тогда надо точнее ограничить область и добавить вертикальные разделители.

Stream часто лучше Lattice обрабатывает таблицы с редкими горизонтальными линиями, но хуже отличает таблицу от обычного многоколоночного текста. Поэтому рамка должна исключать абзацы, подписи к рисункам и колонтитулы. На странице с двумя колонками текста алгоритм может построить две табличные колонки, хотя таблицы там нет.

Перед запуском просмотрите самые длинные значения. Именно они чаще пересекают предполагаемую границу и вызывают сдвиг. Если длинная строка относится к одной ячейке и визуально заходит в соседний столбец, попробуйте явные разделители и Cut text. Если это перенос внутри ячейки, сначала настройте Group into row, чтобы две текстовые строки были объединены корректно.

Рабочая область Excalibur для таблицы без линий в режиме Stream

Group into row

Group into row управляет тем, насколько близко расположенные по вертикали текстовые строки объединяются в одну строку таблицы. Малое значение разделяет переносы на отдельные записи; слишком большое склеивает соседние строки. Настраивайте параметр на странице, где есть многострочное название или примечание внутри ячейки: по одной такой строке легче увидеть границу между полезным объединением и ошибочной склейкой.

Group into column

Group into column задаёт допуск горизонтальной группировки. Он влияет на то, какие текстовые фрагменты считаются частью одного столбца. Увеличение помогает собрать значения, слегка смещённые из-за пропорционального шрифта или выравнивания, но может объединить две соседние колонки. После изменения проверьте не только число столбцов, но и последовательность данных в каждой строке.

Cut text и индексы в Stream

Cut text в Stream разрезает текст по явным разделителям столбцов. Используйте его вместе с Add column, когда PDF хранит строку как цельный текстовый объект. Detect superscripts нужен для верхних и нижних индексов. В обычных финансовых таблицах этот параметр можно не включать; в научных и статистических документах он помогает не потерять смысл обозначений, но требует проверки выгруженных маркеров.

Добавление и удаление разделителей столбцов

Кнопка Add column становится полезной после выбора табличной области. Она добавляет вертикальный разделитель, который можно поставить между двумя логическими столбцами. Разделители особенно важны для Stream, когда расстояния между значениями не позволяют уверенно определить колонку, и для случаев, где один текстовый блок пересекает предполагаемую границу.

Ставьте линию в свободном промежутке, а не поверх символов. Если ширина пробела меняется от строки к строке, ориентируйтесь на самое длинное значение и самый узкий зазор. Линия должна проходить через весь выбранный прямоугольник, поэтому одна неудачная строка может диктовать положение разделителя для всей таблицы.

Добавленные линии можно удалять двойным щелчком. Это быстрее, чем очищать все области. После удаления проверьте, не осталась ли рядом другая линия: при нескольких попытках легко создать два почти совпадающих разделителя, которые породят пустой столбец. Визуально такая пара выглядит толще, а в результате появляется колонка без данных.

Не добавляйте разделитель для каждого визуального пробела. Цель — зафиксировать реальные границы колонок. В таблице с выровненными числами пробелы внутри значений, например между знаком валюты и суммой, не должны становиться отдельным столбцом. Сначала отметьте только основные границы, выполните извлечение и добавляйте новые линии по конкретной ошибке.

Вертикальный разделитель столбца в Excalibur

Просмотр извлечённых данных

После View and Download Data Excalibur создаёт задание и показывает страницу Extracted Data. Каждая найденная таблица отображается как сетка с индексами столбцов. Это контрольный этап: до скачивания можно увидеть пустые ячейки, смещённые заголовки, объединённые значения и лишние строки. Если результат неверен, исправление выполняется в Workspace, а не в этой таблице.

Проверяйте данные по опорным точкам. Сравните первую и последнюю строку, итоговые суммы, строку с самым длинным названием, отрицательные значения, проценты и ячейки со сносками. Такая выборка быстрее полного чтения, но хорошо выявляет типовые геометрические ошибки. Для критичных данных затем полезно сверить количество строк и контрольную сумму столбца уже в табличном редакторе.

Столбцы с числовыми значениями выводятся как текстовое представление, которое затем интерпретирует выбранный формат и программа-получатель. Десятичная запятая, пробелы в разрядах, скобки отрицательных сумм и символы валют могут мешать автоматическому преобразованию в числа. Excalibur извлекает содержимое, но не нормализует бухгалтерские форматы по региональным правилам.

Если на странице было несколько областей, результат может содержать несколько таблиц. Сохраняйте порядок страниц и областей, чтобы понимать происхождение каждого блока. Для последующего объединения лучше добавить в отдельный столбец номер страницы или период уже после выгрузки; интерфейс Excalibur не добавляет такую служебную колонку в извлечённые данные.

Предпросмотр результата Lattice в Excalibur

Экспорт в CSV, Excel, JSON и HTML

В списке Download доступны CSV, Excel, JSON и HTML. Формат выбирают после проверки предпросмотра. CSV подходит для обмена с аналитическими системами и скриптами, Excel — для ручной проверки и дальнейших расчётов, JSON — для загрузки в приложения, HTML — для публикации или просмотра табличной разметки.

CSV требует внимания к кодировке, разделителю и десятичным знакам уже в программе-получателе. Если файл открывается одним столбцом, это обычно не ошибка извлечения, а несовпадение ожидаемого разделителя. Импортируйте файл через мастер данных и явно укажите разделитель. Для русских чисел с десятичной запятой не следует автоматически заменять все запятые: они могут отделять поля.

Excel удобнее для многостраничного результата, поскольку сохраняет табличное представление без ручного импорта разделителей. Однако выгрузка не превращает сложные заголовки в идеальную модель данных. Объединённые ячейки, многоуровневые шапки и переносы всё равно требуют нормализации. Не удаляйте исходный столбец до проверки, если собираетесь преобразовать его в дату или число.

JSON полезен, когда результат будет обрабатывать код. До интеграции проверьте, как представлены пустые значения и индексы столбцов. HTML сохраняет таблицу для браузерного просмотра, но не является исходным PDF и не воспроизводит его оформление. Цвета, шрифты, ширина линий и точное расположение на странице в задачу экспорта не входят.

Предпросмотр таблицы Stream и выбор формата скачивания

Сохранённые правила для повторяющихся документов

Rules решает главную задачу повторной обработки: сохранить параметры, которые однажды дали правильный результат, и применить их к новому PDF с похожей структурой. В правило входят геометрические области и настройки извлечения. Это полезно для ежемесячных отчётов, однотипных счетов, формуляров и статистических бюллетеней, где меняются значения, но не положение таблицы.

Правило следует создавать только после контрольной выгрузки. Если сохранить промежуточную рамку, ошибка будет воспроизводиться на всех следующих документах. Название правила должно объяснять макет: организация, тип формы, ориентация страницы, диапазон страниц и при необходимости год шаблона. Имя вроде “rule1” быстро становится бесполезным.

В Workspace кнопка Select Saved Rule показывает доступные схемы. После выбора надо визуально проверить наложение на новую страницу. Даже у похожих документов верхний отступ может измениться из-за длинного заголовка, дополнительной строки или другого размера бумаги. Правило ускоряет работу, но не отменяет проверку координат.

Менеджер Rules позволяет скачивать правила и загружать их обратно. Это удобный способ резервного копирования и переноса между рабочими окружениями. Перед импортом чужой схемы убедитесь, что она предназначена для того же макета и диапазона страниц. Правило не распознаёт тип документа по содержанию и не адаптирует координаты к произвольной верстке.

  • Сохраняйте правило после успешной сверки.
  • Включайте в имя документацию о макете.
  • Перед запуском на новом PDF проверяйте каждую рамку.
  • Храните экспорт правил вместе с образцом PDF.
  • Создавайте отдельные правила для разных размеров страницы.

Jobs и контроль выполненных заданий

Вкладка Jobs хранит задания извлечения. Она нужна, когда один файл обрабатывался несколько раз с разными рамками или параметрами. Запись задания отделяет вычисление от загруженного PDF: по ней можно открыть готовый результат, увидеть состояние и повторно скачать данные, не перестраивая таблицу.

При последовательной конфигурации задания выполняются по очереди. Если крупный документ обрабатывается долго, не нажимайте View and Download Data многократно: это создаёт несколько одинаковых работ и усложняет выбор результата. Сначала дождитесь изменения состояния, затем проверяйте Jobs. Для диагностики полезно сравнивать время запуска и имя исходного файла.

Если задание завершилось, но таблица пуста, причина чаще находится в диапазоне страниц, границе области или отсутствии текстового слоя. Если оно остаётся в процессе, проверяют, работает ли исполнитель и доступны ли каталоги данных. При конфигурации с Celery дополнительно проверяют брокер и запущенный worker. Интерфейс сам по себе не исправляет потерянную очередь.

Старые задания занимают место вместе с результатами и связанными файлами. Встроенная команда resetdb не является способом выборочной уборки: она удаляет метаданные загруженных файлов, сохранённые настройки и завершённые либо активные задания. Перед её использованием нужны резервная копия правил и понимание, какие результаты больше не понадобятся.

Проверка пригодности PDF перед извлечением

Главный тест занимает несколько секунд: откройте исходный PDF в обычном просмотрщике и попробуйте выделить мышью отдельное слово внутри таблицы. Если выделяется текст, документ имеет текстовый слой и подходит для Excalibur. Если выделяется только вся страница как картинка или курсор не видит символы, сначала требуется OCR в другом инструменте.

Наличие выделяемого текста ещё не гарантирует правильную структуру. Некоторые PDF содержат каждый символ как отдельный объект, используют необычное направление письма или размещают слова без естественного порядка чтения. Excalibur опирается на координаты, поэтому геометрически аккуратная таблица часто извлекается лучше, чем документ с визуально красивым, но хаотичным внутренним представлением.

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

Для многоязычных таблиц важна не языковая модель, а корректный текстовый слой. Кириллица, латиница и японские символы могут извлекаться, если шрифт и кодировка позволяют получить Unicode-текст. На реальном примере с японской таблицей Excalibur сохраняет символы в строках результата; проблемы возникают, когда PDF использует нестандартное сопоставление глифов.

Извлечённая таблица с японскими символами в Excalibur

Почему сканы не распознаются

Изображение страницы содержит пиксели, но не содержит координат букв, которыми пользуются Lattice и Stream. Lattice может заметить линии на скане, однако без текстовых объектов ему нечего помещать в ячейки. Stream вообще строится на расположении текстовых элементов. Поэтому фотография таблицы, даже очень резкая, не превращается в данные только от выбора рамки.

Правильный рабочий процесс состоит из двух этапов: сначала OCR создаёт PDF с текстовым слоем, затем Excalibur извлекает структуру таблицы. После OCR обязательно проверьте выделение текста и качество распознавания цифр. Ошибка “8” вместо “3” сохранится в CSV, потому что Excalibur не сверяет символ с изображением.

OCR-файл должен сохранять координаты слов относительно оригинальной страницы. Простое распознавание в сплошной текст без привязки к положению разрушает табличную геометрию. Выбирайте режим создания PDF с невидимым текстовым слоем поверх изображения или экспорт в PDF с сохранением макета. Затем ограничивайте область так же, как для обычного текстового документа.

Для массовых сканов разумнее использовать решение, которое одновременно распознаёт символы и таблицы. Excalibur остаётся полезным после OCR, когда требуется вручную настроить границы, но не заменяет этап распознавания. Это ограничение следует учитывать до загрузки сотен страниц, иначе очередь завершится пустыми или неполными таблицами.

Работа с многостраничными отчётами

В длинном отчёте сначала определите страницы с таблицами и загрузите только их. Строка Page numbers принимает разрозненные номера и интервалы, поэтому не требуется обрабатывать весь документ. Например, можно указать страницы раздела и отдельно приложения. Это уменьшает число миниатюр и облегчает контроль каждой области.

Одинаковая таблица, продолженная на нескольких страницах, обычно требует отдельной области на каждом листе. Заголовок может повторяться, а последняя строка одной страницы логически продолжаться на следующей. Excalibur извлекает страницы, но не выполняет смысловое сшивание. После выгрузки повторные заголовки удаляют, а строки объединяют в табличном редакторе или скрипте.

При разном масштабе страниц одно правило может не совпасть с координатами. Формат бумаги, ориентация, поля и обрезка влияют на положение рамки. Для портретных и альбомных листов создавайте разные правила. Если только одна страница выбивается из шаблона, разметьте её вручную, не меняя правило для остальных.

Следите за порядком областей. Когда на странице две таблицы, а на следующей одна, итоговая последовательность может быть неудобна для автоматического объединения. Сохраняйте таблицы отдельно или добавляйте идентификатор источника после экспорта. Нельзя полагаться только на индекс таблицы без сопоставления с номером страницы.

Стратегия настройки сложной таблицы

Сложную таблицу лучше настраивать по принципу “одна переменная за попытку”. Сначала выберите точную область и метод. Затем запустите результат без дополнительных разделителей. Если проблема относится к границам колонок, добавьте одну линию. Если не находятся сегменты сетки, измените Detect small lines. Одновременная смена пяти параметров не позволяет понять, что помогло.

Используйте контрольный набор строк: шапку, обычную строку, строку с длинным текстом, итог и строку со сноской. После каждой попытки сравнивайте именно их. Когда корректны все пять типов, вероятность скрытой ошибки ниже. Для числовой таблицы дополнительно сверяйте итоговую сумму или количество записей.

Если Lattice создаёт слишком много ячеек, проверьте декоративные линии и Process background. Если Stream склеивает колонки, добавьте разделители и уменьшите горизонтальную группировку. Если одна запись распадается на две строки, корректируйте вертикальную группировку. Если заголовок попадает в данные, сузьте рамку или удалите его после экспорта осознанно.

Сохраняйте промежуточные результаты с понятными именами вне Excalibur. Это позволяет сравнить CSV и не потерять удачную конфигурацию. После окончательной проверки сохраните правило и кратко зафиксируйте, какой тип PDF оно обслуживает. Такая дисциплина превращает ручную разметку в повторяемый процесс.

Типичные ошибки и способы исправления

СимптомВероятная причинаЧто сделать
Пустой результатСкан без текстового слоя или неверная страницаПроверить выделение текста и диапазон Pages
Все данные в одном столбцеStream не нашёл границыДобавить вертикальные разделители и Cut text
Слишком много строкПереносы не сгруппированыНастроить Group into row
Соседние строки склееныСлишком большой вертикальный допускУменьшить Group into row
Ложные ячейкиДекоративные или фоновые линииСузить область и отключить Process background
Пустой столбецДва близких разделителяУдалить лишнюю линию двойным щелчком
Обрезаны крайние символыРамка слишком теснаяНемного расширить область
Пропали короткие линииНедостаточная чувствительность LatticeПостепенно увеличить Detect small lines

Ошибка загрузки часто связана с расширением, повреждением PDF или отсутствием выбранного файла. Интерфейс принимает PDF; переименование другого формата в .pdf не делает его корректным документом. Откройте файл в просмотрщике и пересохраните, если структура повреждена.

Если после запуска виден Processing и страница не меняется, проверьте процесс webserver и исполнитель заданий. В простой конфигурации задачи выполняются через multiprocessing; при Celery нужен активный worker и доступный брокер. Перезагрузка вкладки не запускает остановленный исполнитель.

Когда символы в CSV выглядят неправильно, сначала откройте JSON или HTML. Если там текст корректен, проблема в способе импорта CSV. Если и в HTML символы заменены, причина находится в текстовом слое PDF или сопоставлении шрифта. Excalibur не восстанавливает отсутствующую Unicode-карту.

Установка и первый запуск

Для установки пакета требуется Python 3.9 или новее. Удобнее создать отдельное виртуальное окружение, чтобы зависимости Flask, Camelot, Celery, SQLAlchemy, pypdfium2 и Pillow не конфликтовали с другими проектами. После активации окружения пакет устанавливают командой python -m pip install excalibur-py.

Затем метаданные инициализируют командой excalibur initdb. Без этого страницы Files, Rules и Jobs не смогут корректно хранить записи. После успешной инициализации запускают excalibur webserver и открывают интерфейс в браузере на порту 5000. В среде, где команда excalibur не попала в PATH, можно использовать запуск модуля через Python.

Современная зависимость Camelot использует pdfium как основной механизм преобразования страниц, а Excalibur явно включает pypdfium2. Поэтому старые инструкции с обязательным Ghostscript не всегда отражают фактический набор зависимостей установленного пакета. Устанавливать дополнительный конвертер следует только при конкретной ошибке выбранного backend, а не автоматически.

Первую проверку лучше выполнять на небольшом текстовом PDF с одной таблицей. Загрузите одну страницу, обведите область, выберите подходящий Flavor и экспортируйте CSV. Только после этого переходите к большим документам. Так проще отделить проблему установки от проблемы конкретного макета.

Конфигурация и каталог данных

При первом запуске создаётся файл excalibur.cfg в каталоге EXCALIBUR_HOME; по умолчанию используется папка ~/excalibur. В конфигурации задаются соединение с базой метаданных, исполнитель и связанные параметры. Перед редактированием остановите webserver и сохраните копию файла.

База метаданных хранит сведения о загрузках, правилах и заданиях. Сами документы и промежуточные файлы размещаются в каталогах данных, доступных процессу Excalibur. При переносе рабочей среды одной базы недостаточно: для полноценного восстановления нужны конфигурация, метаданные, загруженные PDF, результаты и экспорт правил.

Команда excalibur resetdb удаляет информацию о загруженных файлах, сохранённых настройках и завершённых либо выполняющихся заданиях. Это разрушительная операция, а не обычная очистка кэша. Используйте её только после резервного копирования и остановки обработчиков.

Права файловой системы должны позволять процессу создавать каталоги, сохранять PDF и выдавать результаты. Ошибка доступа может выглядеть как зависшая загрузка или отсутствующий файл. На сервере запускайте webserver от отдельной учётной записи и выдавайте ей доступ только к рабочему каталогу, а не ко всей домашней папке.

SQLite, MySQL и Celery

По умолчанию метаданные хранятся в SQLite, а задачи выполняются последовательно с использованием multiprocessing. Такой режим подходит для одного пользователя и умеренного числа документов: его легко развернуть, не требуется отдельный сервер базы данных и брокер очередей.

Для нескольких работников или распределённой обработки можно подключить MySQL через строку sql_alchemy_conn в конфигурации. Дополнительные зависимости устанавливаются вариантом пакета с поддержкой MySQL. Базу и пользователя создают заранее, после чего повторно выполняют инициализацию метаданных.

CeleryExecutor позволяет передавать задания worker-процессам. Для этого нужен брокер, например Redis или RabbitMQ, соответствующие параметры в конфигурации и запущенная команда excalibur worker. Параллелизм ускоряет независимые документы, но не исправляет неверную разметку и не делает одну сложную страницу автоматически точнее.

При масштабировании важно хранить PDF и результаты в месте, доступном всем worker. Если база общая, а файлы остаются на диске только одного узла, другой worker получит запись задания, но не найдёт входной документ. Общая файловая система, согласованные пути и одинаковые версии зависимостей важнее числа процессов.

Безопасность и конфиденциальность данных

Загруженные PDF, настройки и обработка остаются на машине, где запущен Excalibur. Это удобно для закрытых отчётов, но безопасность зависит от конфигурации владельца. Если webserver доступен по сети без дополнительной защиты, любой пользователь с доступом к адресу может увидеть Files, Rules и Jobs.

Не публикуйте порт напрямую в интернет. Для командной работы используйте обратный прокси с TLS, аутентификацией и ограничением по сети. Сам интерфейс ориентирован на рабочий контур и не должен считаться готовой системой разграничения доступа. Особенно опасны документы с персональными данными и финансовой отчётностью.

Каталог загрузок следует включить в политику хранения. После завершения проекта удаляйте ненужные PDF и результаты осознанно, но не применяйте resetdb без резервной копии. Журналы и брокер очередей тоже могут содержать имена файлов, идентификаторы заданий и сообщения об ошибках.

При скачивании пакета используйте официальный wheel или исходный архив и сверяйте SHA-256. Пакет Python не имеет привычной подписи Windows-установщика; доверие строится на происхождении файла, хэше и данных публикации. Не используйте исполняемые сборки неизвестных авторов и загрузчики, которые предлагают постороннее ПО.

Ограничения форматов и структуры

Входной формат рабочего экрана — PDF. Изображения, электронные таблицы и документы Word сначала нужно преобразовать, но такое преобразование имеет смысл только при сохранении текстового слоя и геометрии. Если исходные данные уже находятся в Excel, прогонять их через PDF и Excalibur нецелесообразно.

Экспорт ограничен табличными форматами CSV, Excel, JSON и HTML. Программа не создаёт новый PDF с исправленной таблицей, не меняет исходные страницы и не сохраняет визуальный дизайн отчёта. Её результат — структурированные значения, а не отредактированный документ.

Сложные элементы требуют постобработки: объединённые ячейки, вложенные таблицы, повёрнутый текст, диагональные заголовки, графики внутри ячеек и многоуровневые сноски. Рамка и разделители помогают определить геометрию, но не добавляют семантическое понимание. Например, строка “Итого” останется обычной строкой.

Таблица, разбитая по страницам, не сшивается автоматически. Ячейки не проверяются по типам, формулы не восстанавливаются, формат валюты не нормализуется. Эти операции выполняют после экспорта. Excalibur лучше всего рассматривать как контролируемый этап извлечения между PDF и последующей обработкой данных.

Практические сценарии

Финансовый отчёт с сеткой

Выберите страницы с балансом, запустите Autodetect Tables и оставьте отдельную область для каждой формы. Используйте Lattice, проверьте Detect small lines только при разорванной сетке. В результате сверяйте строки итогов и знаки отрицательных сумм. После экспорта преобразуйте суммы в числа с учётом разделителей разрядов.

Банковская выписка без линий

Ограничьте область строками операций, исключив реквизиты и нижний колонтитул. Выберите Stream, проверьте группировку переносов в назначении платежа и добавьте разделители между датой, описанием, дебетом, кредитом и остатком. Не делите пробел внутри суммы как отдельную колонку.

Ежемесячный статистический бюллетень

Настройте одну контрольную публикацию, сохраните правило с названием формы и периода, затем применяйте его к новым выпускам. Каждый раз проверяйте совпадение рамки, поскольку добавленная строка заголовка сдвигает таблицу. Храните экспорт правила вместе с примером корректного PDF.

Научная таблица с индексами

Выберите метод по наличию сетки и включите Detect superscripts, если верхние или нижние индексы несут смысл. Проверьте единицы измерения, знаки степени и сноски. При экспорте в CSV индексы могут быть представлены маркерами, поэтому сравнение с PDF обязательно.

Контроль качества после экспорта

Не считайте файл правильным только потому, что он открылся. Сначала сопоставьте число таблиц и страниц. Затем сравните количество строк, заголовки и крайние значения. Для числовых данных вычислите сумму столбца и сравните с итогом в PDF. Для категориальных данных проверьте уникальные значения и пустые ячейки.

Ищите систематические признаки: один столбец полностью пуст, данные сдвинуты на одну позицию, каждая вторая строка содержит продолжение текста, заголовок повторяется в середине. Такие ошибки указывают на геометрию и устраняются в Workspace. Одиночная опечатка чаще исходит из текстового слоя или OCR.

Сохраняйте журнал проверки: имя PDF, диапазон страниц, правило, формат, число строк, контрольная сумма и обнаруженные исключения. Это особенно важно для повторяющихся отчётов. Без журнала невозможно отличить изменение исходных данных от изменения настроек извлечения.

После подтверждения результата храните исходный PDF рядом с экспортом или связывайте их неизменяемым идентификатором. CSV не содержит изображения страницы и не доказывает происхождение значения. Возможность вернуться к первоисточнику необходима для аудита и исправления ошибок.

Сравнение Excalibur с аналогами

Выбор инструмента зависит от того, нужен ли визуальный контроль геометрии, OCR, редактирование документа или программный конвейер. Excalibur занимает узкую нишу: он даёт браузерную рабочую область поверх механизма Camelot, сохраняет правила и показывает результат до экспорта.

ПрограммаЛучше подходит дляГлавное ограничение
ExcaliburВизуальной настройки извлечения таблиц из текстовых PDF и повторного применения правилНет OCR и редактирования PDF
TabulaБыстрого разового выделения таблицы и выгрузки в CSV или ExcelРаботает только с текстовыми PDF
CamelotАвтоматизированных Python-конвейеров, метрик качества и тонкой настройки парсеровДля работы требуется программирование
pdfplumberРазбора объектов PDF, пользовательских алгоритмов и визуальной отладки в PythonНет готового интерфейса для конечного пользователя
ABBYY FineReader PDFOCR сканов и преобразования распознанных таблиц в ExcelТребуется коммерческая лицензия
PDF CommanderРедактирования, объединения, аннотирования и распознавания PDFНет правил геометрического извлечения таблиц

Для одной простой текстовой таблицы быстрее начать с Tabula. Для регулярных файлов с одинаковым макетом полезнее Excalibur и сохранённые Rules. Для серверного конвейера без ручного интерфейса выбирают Camelot или pdfplumber. Для сканов нужен OCR, поэтому практичнее ABBYY FineReader PDF либо PDF Commander, а Excalibur можно подключить после создания качественного текстового слоя.

PDF Commander выбирают, когда таблица является лишь частью задачи и нужно также исправить текст, переставить страницы, объединить документы или распознать скан. Excalibur выбирают, когда главным результатом должны стать структурированные строки и столбцы, а оператору требуется видеть и повторно использовать координаты областей.

Как выбрать между Lattice и Stream

Признак страницыНачальный выборЧто проверить
Полная сетка с пересечениямиLatticeНе создают ли декоративные линии лишние ячейки
Нет линий, но столбцы выровнены пробеламиStreamНе склеиваются ли соседние колонки
Только горизонтальные линииStream, затем Lattice для проверкиКак обрабатываются переносы и заголовки
Светлая или разорванная сеткаLatticeНужны ли Process background и Detect small lines
Многострочные текстовые ячейкиStreamПодходит ли Group into row
Скан страницыСначала OCRСоздан ли корректный текстовый слой

Метод выбирают по структуре конкретной области, а не по всему документу. На одном листе одна таблица может требовать Lattice, а другая — Stream. Если результат сомнителен, выполните обе попытки и сравните число строк, целостность заголовков и контрольные суммы.

Не пытайтесь компенсировать неверный Flavor крайними значениями допусков. Когда у таблицы нет линий, увеличение чувствительности Lattice создаёт ложные границы. Когда сетка плотная, Stream может объединять ячейки. Правильная модель структуры всегда важнее тонкой настройки.

Резервное копирование и перенос работы

Минимальный набор для повторяемости включает исходный PDF, выгруженный результат, экспорт Rules, конфигурацию и запись параметров проверки. Если используются задания на сервере, добавляют резервную копию базы метаданных и каталогов файлов. Один только CSV не позволяет восстановить рамки и понять, как он был получен.

Перед обновлением Python-окружения создайте список установленных зависимостей и скопируйте EXCALIBUR_HOME. После переноса выполните тест на известном PDF и сравните результат с контрольным файлом. Изменение зависимостей обработки PDF может повлиять на координаты или интерпретацию линий, даже если интерфейс выглядит одинаково.

Экспорт Rules удобен для обмена между операторами. Вместе с правилом передавайте образец страницы и инструкцию по диапазону. Не включайте конфиденциальный PDF в общий пакет, если достаточно обезличенного шаблона. Получатель должен проверить рамки перед первым запуском.

Для базы SQLite копирование выполняют при остановленном webserver и отсутствии активных заданий. Для MySQL используют штатный дамп. После восстановления проверяют не только список Files, но и доступность физических PDF и результатов по сохранённым путям.

Работа с нестабильным макетом

Если поставщик меняет высоту заголовка, размер шрифта или число строк, фиксированное правило перестаёт совпадать. Не расширяйте рамку на всю страницу “на всякий случай”: это добавляет посторонний текст. Создайте несколько правил для известных вариантов и выбирайте их по образцу.

Небольшой вертикальный сдвиг можно исправить ручным перемещением области после загрузки правила. Сильное изменение структуры требует новой разметки. Признак несовместимого шаблона — границы колонок перестают проходить через свободные промежутки одновременно во всех строках.

Для пакета документов полезно сначала выбрать по одному примеру каждого макета и настроить их отдельно. Затем обрабатывать однородными группами. Смешивание разных форм в одной очереди увеличивает риск применить неверное правило и получить правдоподобную, но смещённую таблицу.

Автопоиск может быть безопаснее старого правила, если документ существенно изменился. Запустите Autodetect Tables, сравните новые рамки с сохранёнными и только затем решайте, какую схему использовать. Само наличие правила не означает, что оно подходит к текущей странице.

Разбор чисел, дат и пустых значений

Excalibur восстанавливает ячейки, но не навязывает тип данных. Дата остаётся строкой, сумма может содержать пробелы, процент — знак процента, а пустая ячейка — пустое значение. Типизацию следует выполнять после проверки геометрии, иначе ошибка столбца превратится в ошибку преобразования и будет труднее найти.

Перед преобразованием чисел сохраните исходную колонку. Удалите неразрывные пробелы, отдельно обработайте скобки отрицательных сумм и задайте десятичный разделитель. Не заменяйте символы глобально во всём файле: запятая может встречаться в тексте, а точка — в дате или сокращении.

Даты с двумя цифрами года, названиями месяцев или разными порядками компонентов требуют явного формата. Сначала сравните несколько строк с PDF. Если часть даты оказалась в соседнем столбце, исправляйте разделитель в Workspace, а не склеивайте строки по догадке.

Пустые ячейки могут быть настоящими пропусками, следствием объединённого заголовка или признаком неверной границы. Определяйте причину по положению на странице. Автоматическое заполнение вниз допустимо только для полей, которые логически распространяются на следующие строки, и должно быть задокументировано.

Что Excalibur не делает

Интерфейс не меняет текст, изображения, порядок страниц, поля, подписи и защиту PDF. Он не добавляет комментарии, не объединяет документы и не создаёт формы. Если задача требует исправить исходный файл, сначала используйте PDF-редактор, а затем извлекайте таблицу из сохранённой копии.

Предпросмотр не является редактором Excel. Нельзя щёлкнуть ячейку и исправить значение, объединить столбцы, добавить формулу или переименовать заголовок. Любая систематическая ошибка должна быть исправлена геометрией; единичные правки выполняются после экспорта.

Программа не понимает предметный смысл. Она не знает, что сумма должна сходиться, дата должна попадать в период, а код — соответствовать справочнику. Эти проверки относятся к следующему этапу. Сильная сторона Excalibur — прозрачный контроль областей и параметров, а не бизнес-валидация.

Она также не восстанавливает данные, которых нет в текстовом слое. Невидимый или неверно закодированный символ нельзя получить настройкой рамки. В таких случаях помогает другой PDF, повторная генерация отчёта или OCR с проверкой по изображению.

Практический порядок для надёжного результата

  1. Проверить, что текст в таблице выделяется и копируется.
  2. Задать минимальный диапазон страниц.
  3. Запустить Autodetect Tables и удалить ложные области.
  4. Уточнить рамки вручную по крайним символам.
  5. Выбрать Lattice или Stream по реальной структуре.
  6. Выполнить контрольное извлечение без лишних настроек.
  7. Менять по одному параметру и сравнивать опорные строки.
  8. Проверить предпросмотр, число строк и итоговые значения.
  9. Скачать подходящий формат и выполнить типизацию данных.
  10. Сохранить правило, исходный PDF и журнал проверки.

Этот порядок отделяет четыре класса проблем: качество исходного PDF, геометрию области, параметры парсера и последующую обработку. Если начинать с экспорта и сразу чистить CSV, ошибка может повторяться в каждом новом документе. Если сначала исправить правило, повторные файлы обрабатываются предсказуемо.

Самая полезная привычка — возвращаться к странице при любой странности в данных. Пустой столбец, лишняя строка или склеенное значение почти всегда имеют видимую геометрическую причину. Workspace делает эту причину наблюдаемой, поэтому ручная проверка здесь эффективнее автоматической догадки после выгрузки.

После настройки Excalibur сокращает повторяющуюся работу: области, метод и допуски не приходится восстанавливать с нуля. Но сохранённое правило остаётся технической гипотезой о макете. Короткая визуальная сверка каждого нового PDF защищает от тихих изменений формы и правдоподобных ошибок.

Английские элементы интерфейса

Подписи интерфейса не переведены, поэтому полезно заранее сопоставить команды с действиями. Files — загрузки, Rules — правила, Jobs — задания, Upload PDF — выбор документа, Page numbers — страницы, Extract Again — повторное извлечение, Download — переход к результату. В Workspace основные кнопки называются Select Saved Rule, Autodetect Tables, Clear Tables и View and Download Data.

Flavor означает способ разбора. Lattice ищет линии сетки, Stream группирует текст по координатам. Add column добавляет вертикальную границу, Remove удаляет область, Advanced открывает параметры. В результате Select format выбирает CSV, Excel, JSON или HTML. Понимание этих терминов важнее полного перевода: каждая команда соответствует конкретному этапу, а случайное нажатие Clear Tables удаляет текущую разметку.

Логические поля Process background, Cut text и Detect superscripts ожидают значения true или false. Числовые поля Group into row, Group into column и Detect small lines должны получать числа без единиц измерения. Если ввод не принимается, верните значение по умолчанию и меняйте его небольшими шагами. Смешивать русские слова “да” и “нет” с английскими логическими полями не следует.

Кнопки в верхнем меню не заменяют историю браузера. После результата возвращайтесь к нужному файлу через Files или к заданию через Jobs, чтобы не потерять контекст. При нескольких открытых вкладках сверяйте имя файла в заголовке Workspace: одинаковая разметка на похожих документах визуально легко перепутывается.

Координаты страницы и точность рамок

Excalibur переводит выбранные на изображении области в координаты PDF. У PDF начало координат и направление осей отличаются от экранной системы, а рабочее изображение может иметь иной масштаб. Пользователю не нужно вводить числа вручную, но нужно сохранять неизменную страницу: поворот, обрезка или повторная печать PDF меняют геометрию и делают старое правило неточным.

Рамка должна учитывать не только видимые линии, но и реальные границы текстовых объектов. Символ может выступать за нарисованную ячейку из-за особенностей шрифта. Если крайняя буква пропадает, расширьте область в сторону текста. Если в таблицу попадает соседний абзац, сдвиньте границу внутрь, не пытаясь отфильтровать строку после экспорта.

На страницах с разным MediaBox или CropBox одинаковая визуальная таблица может иметь разные координаты. Это встречается в PDF, собранных из нескольких источников. Проверяйте рамку на каждой миниатюре, особенно после страницы с другой ориентацией. Правило, созданное на листе A4, не обязано совпасть с таблицей на Letter или с обрезанным сканом.

Масштаб браузера влияет на удобство наведения, но сохранённая область рассчитывается относительно отображаемого изображения. При очень сильном уменьшении трудно попасть между близкими столбцами. Для точной разметки используйте обычный масштаб окна и достаточно широкий экран; затем проверяйте, проходит ли разделитель через свободный промежуток по всей высоте таблицы.

Текстовый слой, шрифты и порядок чтения

PDF хранит текст не как строки электронной таблицы, а как набор объектов с координатами. Слова могут быть разбиты на символы, размещены в неожиданной последовательности или закодированы через встроенный шрифт. Excalibur восстанавливает таблицу по геометрии, поэтому визуально одинаковые документы иногда дают разные результаты.

Проверка копированием помогает диагностике. Скопируйте одну строку из PDF в текстовый редактор. Если порядок слов меняется, цифры идут раньше названий или символы превращаются в квадраты, проблема находится в текстовом слое. Рамка способна отделить область, но не исправить внутреннюю кодировку.

Невидимый текст после OCR может быть смещён относительно изображения. Тогда линии видны в одном месте, а координаты слов находятся в другом. Lattice построит ячейки по сетке, но текст попадёт в соседние клетки. Откройте PDF в просмотрщике, выделите слово и посмотрите, совпадает ли выделение с изображением. При заметном смещении выполните OCR заново.

Вертикальный и повёрнутый текст обрабатывается сложнее. Заголовки, повернутые на 90 градусов, могут получить необычный порядок символов. Если такие ячейки критичны, сравните оба Flavor и предусмотрите ручную коррекцию после экспорта. Основные горизонтальные данные при этом можно извлечь отдельной областью, исключив сложную шапку.

Подготовка результата OCR

После распознавания не загружайте документ сразу в массовую обработку. Проверьте три вещи: выделяются ли отдельные слова, совпадают ли рамки выделения с изображением и правильно ли распознаны цифры в контрольной строке. Наличие поиска по тексту подтверждает слой, но не подтверждает точность координат и символов.

Для таблиц с тонкой сеткой OCR-программа может очищать линии как шум. Если планируется Lattice, сохраняйте видимые границы либо создавайте текстовый PDF без разрушения изображения. Если линии исчезли, Stream может всё равно сработать при хорошем выравнивании, но понадобится больше ручных разделителей.

Исправьте ориентацию и перекос до OCR. Наклонённые строки создают разные вертикальные координаты для слов одной записи, из-за чего Group into row приходится увеличивать, а соседние строки начинают склеиваться. Выравнивание страницы улучшает и распознавание, и последующее восстановление таблицы.

Не применяйте сильное сжатие после OCR. Размытое изображение не влияет на уже созданный текстовый слой напрямую, но мешает визуальной сверке, а повторная оптимизация иногда удаляет или перестраивает скрытый текст. Храните исходный скан и распознанную копию отдельно, чтобы можно было проверить спорное значение.

Производительность и планирование ресурсов

Время обработки зависит от числа выбранных страниц, разрешения создаваемых изображений, количества областей и сложности таблиц. Ограничение Pages — самый безопасный способ сократить нагрузку. Не включайте all для отчёта на сотни страниц, если таблицы находятся только в приложении.

Преобразование PDF в изображения временно увеличивает расход диска, а параллельные задания потребляют память. На машине с ограниченными ресурсами обрабатывайте документы небольшими группами и следите за свободным местом в рабочем каталоге. Пустой диск может прервать сохранение результата даже после успешного разбора таблицы.

Несколько областей на одной странице анализируются как отдельные таблицы. Это точнее, но требует больше вычислений. Не создавайте перекрывающиеся рамки для одного и того же блока: они дадут дублирующиеся данные и увеличат время. Перед запуском используйте Clear Tables, если автопоиск оставил множество ложных областей.

При последовательном исполнителе новая задача ждёт предыдущую. Для одного оператора это предсказуемо и упрощает диагностику. Celery оправдан, когда есть независимые документы и настроенное общее хранилище. Увеличение числа workers без достаточной памяти может замедлить систему из-за конкуренции за ресурсы.

Диагностика запуска и команд

Если оболочка сообщает, что команда excalibur не найдена, убедитесь, что активировано то виртуальное окружение, куда установлен пакет. Команда python -m pip show excalibur-py показывает каталог установки, а python -m pip надёжнее обычного pip связывает установщик с выбранным Python.

После установки сначала выполните excalibur initdb. Ошибка соединения с базой на этом этапе должна быть исправлена до запуска webserver. Для SQLite проверьте права на каталог, для MySQL — строку соединения, доступность сервера, базу и пользователя. Повторный initdb не заменяет корректную конфигурацию.

Если webserver запускается, но браузер не открывает страницу, проверьте вывод терминала и занятость порта 5000. Другой процесс может уже использовать порт. На удалённой машине также учитывайте адрес привязки и правила межсетевого экрана; не делайте интерфейс публичным ради быстрой проверки.

При ошибке импорта сохраните полный traceback. Название отсутствующего модуля указывает на зависимость, а сообщение о несовместимом API — на конфликт версий. Не устанавливайте случайные пакеты с похожими именами. Пересоздание чистого виртуального окружения часто надёжнее последовательного обновления отдельных библиотек.

Развёртывание для нескольких пользователей

Для общей работы интерфейс обычно размещают за обратным прокси. Прокси завершает TLS, ограничивает доступ и может добавлять аутентификацию. Excalibur при этом продолжает обрабатывать файлы в своём каталоге и хранить метаданные в настроенной базе. Публикация одного порта без контроля доступа не обеспечивает разделение пользователей.

Все пользователи видят общие Files, Rules и Jobs, если внешний слой не создаёт изолированные экземпляры. Поэтому названия документов и правила не должны раскрывать лишние данные, а рабочие группы с разными полномочиями лучше разделять по экземплярам или инфраструктурным контурам.

При нескольких workers каталог входных PDF и результатов должен иметь одинаковый путь и быть доступен на чтение и запись всем процессам. Права и идентификаторы пользователей системы должны быть согласованы. Общая MySQL-база без общего файлового хранилища создаёт задания, которые видны, но не могут открыть исходный файл.

Резервное копирование выполняют согласованно: база, файлы и правила должны относиться к одному моменту. Иначе метаданные будут ссылаться на отсутствующий результат или старую копию PDF. Для планового обслуживания сначала остановите приём новых заданий, дождитесь очереди и только затем копируйте данные.

Постобработка в табличном редакторе

После экспорта создайте неизменяемый лист с исходными данными и отдельный лист для очистки. Это сохраняет возможность сравнить любое преобразование с результатом Excalibur. На рабочем листе удаляйте повторные заголовки, добавляйте номер страницы, приводите даты и числа к типам и формируйте уникальный ключ строки.

Для многоуровневой шапки сначала определите окончательные имена столбцов. Пустые ячейки под объединённым заголовком нельзя заполнять автоматически без понимания структуры. Объедините уровни в устойчивые названия, например “2025 — сумма” и “2025 — доля”, сохранив исходные строки шапки в отдельном диапазоне.

При объединении страниц проверяйте, что набор столбцов одинаков. Одна дополнительная колонка с примечанием сместит значения при простом склеивании. Сопоставляйте по именам, а не по позиции, и формируйте отчёт об отклонениях. Если структура различается, вернитесь к рамкам или используйте разные правила.

Автоматическую очистку скриптом начинайте только после нескольких вручную проверенных файлов. Зафиксируйте ожидаемое число столбцов, допустимые пустые значения, форматы дат и контрольные суммы. Скрипт должен останавливать обработку при нарушении схемы, а не молча сдвигать данные.

Проверка повторяемости правила

Хорошее правило проверяют минимум на двух документах одного типа: том, на котором оно создано, и другом выпуске. Если рамка совпадает только с первым файлом, это сохранённая разметка, но не устойчивый шаблон. Второй документ выявляет изменения полей, заголовка и числа строк.

Для контрольного набора храните небольшие эталонные экспорты. После изменения окружения или настроек снова обработайте эти PDF и сравните структуру: количество таблиц, строки, столбцы и контрольные значения. Различие не всегда означает ошибку, но требует объяснения до массового запуска.

Правило должно иметь владельца и назначение. В описании рядом с экспортом укажите тип документа, диапазон страниц, Flavor, известные исключения и дату проверки. Сам интерфейс хранит имя, но не заменяет эксплуатационную документацию.

Когда макет изменился, создайте новое правило, а старое сохраните для прежних документов. Перезапись единственной схемы лишает возможности воспроизвести старый результат. Имена с обозначением формы или периода помогают выбрать правильную геометрию без рассказа о программных выпусках.

Итоговый рабочий подход

Excalibur наиболее полезен там, где таблицы уже представлены текстом, оператору нужен визуальный контроль границ, а документы повторяют один макет. Точный диапазон страниц, отдельные области, правильный Flavor и проверка опорных строк дают более надёжный результат, чем попытка исправить всё одним параметром.

Для таблиц с сеткой начинайте с Lattice, для пробельной верстки — со Stream. Ручные разделители применяйте по конкретной ошибке, а сохранённые Rules — только после контрольной выгрузки. Сканы сначала пропускайте через OCR, поскольку рамка не создаёт отсутствующий текстовый слой.

Завершайте каждый сеанс сверкой результата с PDF и сохраняйте связь между исходником, правилом и экспортом. Такой процесс позволяет не только получить CSV или Excel, но и объяснить происхождение каждой строки, повторить обработку на следующем отчёте и быстро найти причину расхождения.