pip install pymupdf4llm-c или cargo: cargo add pymupdf4llm-c.Для каждой страницы создается JSON с массивом блоков:
[
{
"type": "paragraph|heading|table|list|figure",
"text": "content",
"bbox": [x0, y0, x1, y1],
"font_size": 11.0,
"font_weight": "normal",
"page_number": 0
}
]
Для таблиц добавляются
row_count, col_count, confidence. Координаты в PDF points, типы блоков для семантической обработки.Как использовать
from pymupdf4llm_c import to_json
# В память
results = to_json("report.pdf", collect=True)
for page in results:
for block in page:
if block['type'] == 'table':
process_table(block) # свой код для таблиц
Можно писать в файлы:
to_json(pdf_path, output_dir=Path("json")). Для Rust есть to_json_collect() и extract_page_json().Полезно, когда:
— требуется предсказуемая структура для векторных баз;
— нужно различать заголовки, списки, таблицы при чанкинге;
— скорость критична: C-реализация быстрее Python-аналогов;
— работаешь с документами, где важна иерархия и расположение элементов.
Перед использованием нужно собрать:
./build.sh. Проект свежий, но рабочий. Код в репо.@zen_of_python