TypeScript SDK: Document: текст и таблицы
Document содержит результат разбора файла. Перед обработкой всех данных проверьте complete() и warnings(). Методы ниже работают локально.
Примеры — отдельные фрагменты тела async function run(ctx: Akmelo.Context): Promise<void>. Используйте await только для методов с Promise в сигнатуре.
Как получить объект
const document = await ctx.documents().fromBytes('sku,price\nA-1,1250', 'report.csv');
Методы
text()format()tables()rows()pages()links()complete()warnings()sheetNames()sheet()page()matches()chunks()blocks()
text
document.text() → string
Текст документа, включая доступные колонтитулы и примечания Office. В PDF сохраняется разбиение текста по страницам. Структура и форматирование DOCX дополнительно доступны через blocks().
const result = document.text();
format
document.format() → string
Определённый формат: например xlsx, docx, pdf или csv.
const result = document.format();
tables
document.tables() → Array<object>
Листы Excel или таблицы Word: массив объектов name, rows. Числа Excel остаются числами. Поддерживаемые формулы XLSX пересчитываются локально через xlcalculator. Внешние ссылки и макросы не выполняются. rows() и cell() возвращают результат, formula() исходное выражение, cachedValue() сохранённое автором значение. Ошибки доступны через error()/calculation().
const result = document.tables();
rows
document.rows(sheet) → Array<Array<unknown>>
Возвращает строки выбранного листа по индексу или имени. Если листа нет, возвращает пустой массив. Для PDF читайте pages() или text().
const result = document.rows();
pages
document.pages() → Array<object>
Страницы PDF: number, text, ocr. Сканированные страницы распознаются локально на русском и английском. Не более пяти страниц с изображениями и 100 текстовых страниц за один разбор.
const result = document.pages();
links
document.links() → Array<unknown>
Найденные ссылки. Обработчик не переходит по ним и не загружает внешние изображения. При необходимости выберите допустимую ссылку явно через сетевой SDK.
const result = document.links();
complete
document.complete() → boolean
false, если достигнут предел извлечения. Перед сохранением полного отчёта проверьте этот признак. Предел таблиц: 20 листов/таблиц, 5000 строк, 100 столбцов, 50 000 ячеек суммарно; текст до 1 MiB.
const result = document.complete();
warnings
document.warnings() → Array<unknown>
Коды особенностей разбора: сохранённые значения формул, старый формат Office, изображения внутри Word/Excel, предел OCR. Для старых DOC/XLS доступно ограниченное извлечение, встроенные объекты не исполняются.
const result = document.warnings();
sheetNames
document.sheetNames() → Array<string>
Названия извлечённых листов/таблиц в исходном порядке. Для PDF и изображений список пустой.
const result = document.sheetNames();
sheet
document.sheet(sheet) → Worksheet
Лист по индексу с нуля или точному имени. Возвращает Worksheet. При отсутствии листа вызывает понятную ошибку; rows() сохраняет прежнее поведение с пустым массивом. Методы листа работают локально без повторного чтения файла.
const result = document.sheet();
page
document.page(number) → string
Текст страницы PDF или растрового изображения по номеру с единицы. Отсутствующая страница даёт пустую строку, неправильный номер вызывает ошибку. Для Word используйте text().
const result = document.page(2);
matches
document.matches(pattern, limit) → Array<Array<string>>
Ищет совпадения регулярного выражения TypeScript в тексте документа. Возвращает массив совпадений с захваченными группами; не использует синтаксис PCRE.
const result = document.matches('/(\\d+)/');
chunks
document.chunks(characters, overlap) → Array<unknown>
Фрагменты текста в символах Unicode. characters от 100 до 16000, overlap от 0 до characters−1. Метод не отправляет фрагменты во внешние сервисы. Нельзя передавать приватные фрагменты в analyze/transform без отдельной политики обработки.
const result = document.chunks();
blocks
document.blocks() → Array<unknown>
Абзацы и ссылки на таблицы DOCX в порядке исходного документа. Абзац содержит kind=paragraph, level заголовка, align, indent, before, after, marker, depth и runs. У каждого фрагмента runs есть text, bold, italic, underline, size в пунктах. Блок kind=table содержит индекс table в tables(). Для остальных форматов возвращает пустой массив. Значения не отправляются во внешнюю модель.
const result = document.blocks();