Datalab представляє OmniExtractBench, щоб усунути упередженість і непрозорість у бенчмарках вилучення даних
Datalab випустила OmniExtractBench — відкритий бенчмарк для структурованого вилучення даних із документів. Він перевіряє, наскільки точно система заповнює JSON-схему на основі PDF-файлу. Бенчмарк об’єднує 620 документів із 4 наявних бенчмарків. Один детермінований оцінювач перевіряє всі документи й пояснює кожне рішення.
Реліз відбувається в період, коли постачальники систем вилучення публікують власні таблиці лідерів. У Datalab вважають, що такі таблиці складно порівнювати й перевіряти. OmniExtractBench — це спроба створити спільний критерій оцінювання.
Чи придатний він для розгортання? Так, оцінювач встановлюється з PyPI як omni-extract-bench (v0.1.7, Python 3.11+, лише SciPy) за ліцензією Apache 2.0. Для повторного запуску постачальників потрібні власні API-ключі та платні кредити.
Що таке OmniExtractBench?
OmniExtractBench — це бенчмарк для структурованого вилучення даних, створений Datalab. Кожне завдання передає системі PDF-файл і JSON-схему. Система повертає JSON, який оцінюється значення за значенням у порівнянні з еталонним файлом. Код доступний на GitHub, а дані — на Hugging Face за ліцензією CC BY 4.0.
4 недоліки, на які він націлений
У своєму дописі з нагоди запуску Datalab називає 4 типові проблеми наявних бенчмарків для вилучення даних:
- Упередженість: документи й оцінювання можуть надавати перевагу постачальнику, який створив бенчмарк.
- Непрозорі тестові оболонки: низький бал може бути наслідком несправної оболонки, а не слабкої моделі.
- Незрозуміле оцінювання: читачі не можуть зрозуміти, чому конкретний документ отримав низький бал.
- Обмежене різноманіття документів: деякі набори містять лише щільні таблиці, інші — лише чисті файли без сканування.
Звідки походять 620 документів
| Набір | Документи | Початковий видавець | Вміст |
| ExtractBench | 329 | LlamaIndex | Форми, звітність, презентації |
| Внутрішній | 202 | Datalab (синтетичний) | Щільні скалярні схеми, невеликі документи |
| LongExtractBench | 47 | micro1 (на замовлення Reducto) | Дуже великі таблиці |
| LongArray-Extract | 42 | Extend | Великі таблиці з повторюваними скалярними значеннями |
Форми регуляторної звітності — найбільша категорія, 88 документів. 128 документів містять лише одну сторінку. На іншому кінці спектра 33 документи обсягом понад 100 сторінок містять 40% усіх сторінок. Власний синтетичний набір Datalab — друга за розміром частка.
Як працює оцінювач
Оцінювач перетворює прогнозований і еталонний JSON на адреси — шляхи до окремих значень. Спочатку він нормалізує кожне значення, тому «03/31/2024» відповідає «2024-03-31».
Таблиці — найскладніша частина. Якщо порівнювати їх за позицією, один пропущений рядок зміщує всі наступні рядки. Ми повторно запустили оцінювач на таблиці зі 100 рядками, у якій було пропущено перший рядок. Позиційне порівняння дало 0%, тоді як OmniExtractBench — 99%.
Рішенням є зіставлення на основі вмісту за допомогою угорського алгоритму. ExtractBench і LongArray-Extract уже вирівнюють рядки таким чином. OmniExtractBench додає поверх цього рівень вердиктів.
6 вердиктів для кожного значення
- matched: зіставлено, і значення збігаються.
- misread: зіставлено, але значення відрізняються.
- unfound: в еталоні є значення, а в прогнозі його немає.
- fabricated: схема це дозволяє, еталон не містить значення, а прогноз його заповнює.
- invented_item: частина прогнозованого рядка, якій нічого не відповідає.
- invented_field: адреса, яку схема ніколи не оголошувала.
Точність — це кількість зіставлених значень, поділена на кількість усіх вердиктів. Precision ділить кількість зіставлених значень на кількість прогнозованих. Recall ділить їх на кількість еталонних значень. Повні правила наведено в специфікації метрики.
Правило для null
Порожні рядки, None і пробіли вважаються пропусками, тому такі адреси вилучаються. Рядки на кшталт «NA» або «-» залишаються реальними відповідями. Це блокує непомітний спосіб маніпуляції: доповнення схеми порожніми необов’язковими полями для отримання безкоштовних збігів. У нашому тесті доповнення полями зі значенням null додало 0 вердиктів.
Як він порівнюється з іншими бенчмарками для вилучення даних
| Бенчмарк | Видавець | Документи | Вирівнювання рядків | Пояснення для кожного значення | Ліцензія оцінювача | Ліцензія даних |
| OmniExtractBench | Datalab | 620, із 4 джерел | Угорський алгоритм, за вмістом | Так, 6 типів вердиктів | Apache 2.0 | CC BY 4.0 |
| ExtractBench | LlamaIndex | 370 | Угорський алгоритм | Порівняння для кожного поля, HTML-звіт | Apache 2.0 | Apache 2.0 |
| LongArray-Extract | Extend | 45, синтетичні | Угорський алгоритм | Бал для кожного документа | Не вказано | CC BY 4.0 |
| LongExtractBench | micro1 | 225, із них 50 публічних | За ключем рядка | Не вказано | MIT | CC BY 4.0, лише мітки |
Посилання на джерела наведено в назві кожного бенчмарку. Перевірено 27 вересня 2026 року.
Хто пропускає поля, а хто вигадує значення
Datalab оцінила 10 конфігурацій систем на всьому корпусі. Її режим accurate посів перше місце з точністю 93,85. Datalab balanced (93,48) і Reducto deep_extract v2 (93,47) фактично мають однаковий результат. Precision і recall показують, як саме кожна система помиляється.
- Збалансовані: обидва режими Datalab і Reducto утримують precision і recall у межах 0,6 пункту.
- Схильні до пропусків: GPT 5.6-sol демонструє precision 95,11, але recall 84,99. Він втрачає 11,88% через невиявлені значення. Gemini і Claude демонструють таку саму тенденцію, але менш виражену.
- Схильні до вигаданих значень: LlamaExtract має recall 93,13, але precision 86,57, втрачаючи 9,03% через сфабриковані значення. Extend втрачає 4,01% через вигадані елементи.
- Низькі обидва показники: Mistral OCR 4.1 і Azure Content Understanding поступаються за обома метриками, причому recall у них ще нижчий.
Як кожна система не дотягує до 100% за типом вердикту. Джерело: Datalab.
Запустіть самостійно
uv pip install omni-extract-bench
oeb score --pred pred.json --gt gold.json --schema schema.json --verdictsВстановіть додатковий компонент [benchmark] і запустіть oeb benchmark, щоб повторно перевірити постачальників. Запуски можна відновлювати, а кожному постачальнику потрібні власні облікові дані. Datalab також пропонує протестувати її майданчик на власних документах.
Основні висновки
- OmniExtractBench об’єднує 620 документів із наборів LlamaIndex, micro1, Extend і Datalab.
- Детермінований оцінювач надає кожному значенню 1 із 6 перевірюваних вердиктів.
- Зіставлення рядків за вмістом не дає одному пропущеному рядку обнулити результат для всієї таблиці.
- Вилучення адрес зі значенням null не дає доповненню схеми штучно підвищувати бали.
- Datalab accurate лідирує з результатом 93,85; Datalab balanced і Reducto мають майже однаковий результат — близько 93,5.
Поширені запитання
- Що вимірює OmniExtractBench? Він вимірює, наскільки точно система вилучає значення з PDF-файлу в JSON-схему; оцінювання здійснюється для кожного значення.
- Чи є OmniExtractBench відкритим програмним забезпеченням? Так. Оцінювач доступний за ліцензією Apache 2.0 на GitHub і PyPI. Набір даних доступний за ліцензією CC BY 4.0 на Hugging Face.
- Хто створив OmniExtractBench? Його створила Datalab. Datalab також підтримує відкриті інструменти для роботи з документами Marker і Surya.
Дякуємо команді Datalab за ресурси, використані для підготовки цієї статті. Datalab підтримала та профінансувала цей матеріал.
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.