15.11.2026
Скани, рахунки, Word і Excel українською в Markdown - 5 Actors з Apify на 7 файлах, усі таблиці правильно прочитав лише один
П'ять Actors з Apify Store, що перетворюють документи на Markdown, на однакових семи українських файлах - текстовий PDF, чистий скан і скан із шумом, DOCX, XLSX та скани рахунків з таблицею без ліній. Порожні скани, змінені ціни, втрачені таблиці - і єдиний Actor, що правильно обробив усі файли за найнижчою ціною сторінки скану.
За запитом «PDF to Markdown» в Apify Store знаходяться десятки Actors з майже однаковою обіцянкою: текст, таблиці, OCR, готово для RAG. Жоден опис не каже, що буде з українським сканом, файлом Excel чи сканом рахунку, де в таблиці немає ліній. Тож я запустив п'ять із них на однакових семи файлах і порівняв кожен результат з текстом, з якого ці файли зроблено. Усі результати нижче - зі справжніх запусків 15 листопада 2026 року.
Розкриття: один із п'яти - мій, Document to Markdown for AI. Кожне число нижче - зі справжнього запуску, тестові файли публічні, сирі відповіді збережено, тож усе можна повторити й перевірити.
Коротко
| Правильних файлів (із 7) | Рахунок без ліній: точних рядків | Читає Word і Excel | Ціна сторінки скану | |
|---|---|---|---|---|
| ai_admin/document-to-markdown | 7 | 5 із 5 | так | $0,004 |
| nidamindllc/doc-ocr | 2 | 4 із 5 | ні (помилка) | $0,004 |
| lergassy/pdf-text-extractor | 1 | 0 | так | $0,0111 |
| fabrikit/document-to-markdown | 2 | 0 | так | $0,0105 |
| gochujang/pdf-text-extractor | 1 | 0 (порожньо) | ні (лише PDF) | $0,006 |
«Правильно» - це текст, заголовок і таблиця з правильними рядками, де кожне число точно як у документі.
Сім файлів
Усі українською, усі зроблені з відомого тексту, тож кожен символ можна перевірити:
| Файл | Що це |
|---|---|
text-uk.pdf |
PDF з текстовим шаром: заголовок, два речення, таблиця 3 x 3 з цінами на кшталт 96,50 |
scan-uk.pdf |
та сама сторінка як чистий скан |
scan-noisy-uk.pdf |
той самий скан із шумом і невеликим нахилом |
doc-uk.docx |
документ Word з текстом, списком і таблицею |
sheet-uk.xlsx |
книга Excel: таблиця з рядком Total 1,234.50 і аркуш з реченнями |
scan-borderless-uk.pdf |
скан рахунку-фактури: таблиця 5 x 6 зовсім без ліній, суми на кшталт 40 530,00 і 2 500 |
scan-noisy-borderless-uk.pdf |
той самий рахунок із шумом і нахилом |
Останні два - найважчий і водночас найчастіший випадок: більшість рахунків, накладних і банківських виписок
друкують без ліній у таблиці. Файли публічні:
https://api.apify.com/v2/key-value-stores/FloomuI2DrQCJazY8/records/<назва файлу>.
Actors - найпопулярніші за цим запитом і ще один, що обіцяє формати Office. Налаштування: українська мова OCR
(ukr) скрізь, де є вибір мови; у nidamindllc вибору мови немає.
Результати по файлах
| Файл | мій | nidamindllc | lergassy | fabrikit | gochujang |
|---|---|---|---|---|---|
| Текстовий PDF | правильно | одна помилка OCR, таблиця правильна (HTML) | таблиця злита з текстом | таблиця простими рядками | правильно |
| Чистий скан | правильно | правильно (таблиця HTML) | таблиця розірваними рядками | таблиця втрачена | порожньо |
| Скан із шумом | правильно | правильно (таблиця HTML) | таблиця розірваними рядками | рядки без заголовка | порожньо |
| DOCX | правильно | помилка | правильно | правильно | не підтримує |
| XLSX | правильно, 1,234.50 збережено |
помилка | 1,234.50 стало 1234.5 |
правильно | не підтримує |
| Рахунок без ліній | 5/5 рядків, 30/30 клітинок | 4/5 рядків, 29/30 клітинок | таблиці немає, 40 530,00 втратило пробіл |
таблиці немає, усе одним рядком, 96,50 прочитано як 96,0 |
порожньо |
| Рахунок без ліній, із шумом | 5/5 рядків, 30/30 клітинок | 4/5 рядків, 29/30 клітинок | таблиці немає, 96,50 прочитано як 96,60 |
таблиці немає, усе одним рядком | порожньо |
Ось що мій Actor повернув для рахунку без ліній із шумом - кожна клітинка, кожне число і знак № як у документі:
Рахунок-фактура № 47
Постачальник: ТОВ «Будмайстер», м. Львів. Покупець: ФОП Коваленко О. В. Оплата протягом п'яти банківських днів з дати рахунку.
| № | Товар | Од. | Кількість | Ціна | Сума |
| --- | --- | --- | --- | --- | --- |
| 1 | Цемент М500 | мішок | 420 | 96,50 | 40 530,00 |
| 2 | Арматура 12 мм | шт. | 180 | 412,00 | 74 160,00 |
| 3 | Пісок річковий | т | 12 | 650,00 | 7 800,00 |
| 4 | Цегла рядова | шт. | 2 500 | 9,80 | 24 500,00 |
Разом: 146 990,00 грн
Та сама таблиця приходить і рядками клітинок у полі tables - готово для таблиці чи бази даних, а запис показує,
скільки сторінок пройшли через OCR, тож програма знає, який текст узято зі скану.
Для порівняння - той самий рядок рахунку від двох інших Actors:
lergassy: 1 | Цемент М500 мішок 420 96,60 40530,00
fabrikit: ... Мо Товар Од. Кількість Ціна Сума 1 Цемент М500 мішок 420 96,50 40 530,00 2 Арматура12мм шт. ...
Що впало в око
- gochujang повернув порожній текст для всіх чотирьох сканів і все одно позначив їх
ok: true; у журналі запуску -Failed loading language 'ukr'. Це найпопулярніший Actor із п'яти (40 користувачів на місяць), з текстовими PDF він працює чисто, але український скан прочитати не може. - nidamindllc добре працює зі сканами - єдиний конкурент, що зберіг таблицю рахунку, - але він розпізнає кожен PDF, навіть з текстовим шаром, і це додало помилку, якої у файлі не було; файли Word і Excel він не відкриває зовсім.
- lergassy і fabrikit читають усі формати, але не таблиці. У рахунку lergassy змінив ціну (
96,50на96,60), а в таблиці Excel -1,234.50на1234.5; fabrikit прочитав ту саму ціну в чистому рахунку як96,0. У рахунку чи прайсі це найгірша помилка: вона виглядає правильно. - Мій правильно обробив усі сім файлів, зокрема обидва рахунки без ліній, з числами точно як у документі.
Скільки коштує
Усі п'ять Actors беруть плату за подіями. За сторінку скану:
| Actor | Одна сторінка скану | Текстова сторінка чи файл Office |
|---|---|---|
| мій | $0,004 | $0,001 |
| nidamindllc | $0,004 | $0,004 (розпізнає все) |
| gochujang | $0,006 | $0,006 за односторінковий PDF |
| fabrikit | $0,0105 | $0,0005 |
| lergassy | $0,0111 | $0,0031 |
Мій запуск на всіх семи файлах коштував $0,019 і тривав 11 секунд.
Про перевірку
- По одному файлу кожного виду, малі й синтетичні. У справжніх архівах гірші скани, печатки, рукопис - перед вибором спробуйте на десяти своїх файлах. Це коштує кілька центів.
- Кожен Actor працював на збірці, публічній 15 листопада 2026 року (мій - 0.1.20).
Готуючи цю статтю, за результатами тестів я побачив, де ще можна покращити мій Actor, щоб він став найкращим у своїй категорії - скани із шумом і рахунки з таблицею без ліній, - і зробив це одразу, до виходу статті. Це підтверджують останні тести, описані вище.
Спробувати
З Python:
from apify_client import ApifyClient
client = ApifyClient("<ВАШ_ТОКЕН_APIFY>")
run = client.actor("ai_admin/document-to-markdown").call(run_input={
"sources": [{"url": "https://api.apify.com/v2/key-value-stores/FloomuI2DrQCJazY8/records/scan-noisy-borderless-uk.pdf"}],
"ocrLanguages": ["ukr"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["markdown"])
print(item["tables"])
Або дайте його Claude, Cursor чи іншому ШІ-агенту як інструмент MCP - див. MCP-сервер для ШІ-агентів.