#python #tabula #tabula-py
Вопрос:
Я пытаюсь прочитать определенную часть документа в виде таблицы. Он структурирован в виде таблицы, но между ячейками, строками или столбцами нет разделительных линий.
Мне удалось успешно использовать read_pdf()
метод с аргументами area
и. column
Я мог бы точно указать, где начинается и заканчивается таблица и где разделяются столбцы.
Но в моем pdf-файле есть несколько таблиц разных размеров на каждой странице без четких маркеров для их идентификации, и я должен использовать эти аргументы.
Я узнал о read_pdf_with_template()
методе в вопросах репозитория Github здесь, и немного больше об этом в документации, запросе на извлечение и примере записной книжки.
Но нигде не упоминается, как структурировать teamplate.json
и какие аргументы я мог бы использовать или что они означают.
Я попытался вставить area
координаты в x1, y1, x2, y2
, передав список столбцов в аргументе метода и height
аргументы width
с размером таблицы.
Но он выбирает верхнюю центральную часть pdf-файла, которая не соответствует ни одной из координат, которые я вставил, когда я все рассчитал в обратном порядке.
Вот страница, которую я пытаюсь прочитать (я удалил некоторые конфиденциальные данные)
а вот фрагменты кода
import tabula
tables = tabula.read_pdf_with_template(input_path = "test.pdf", template_path = "template.json", columns=[195, 310, 380])
print(tables[0])
[
{
"page": 1,
"extraction_method": "stream",
"x1": 225,
"x2": 35,
"y1": 375,
"y2": 565,
"width": 525,
"height": 400
}
]
Ответ №1:
Я просто вела себя как дурочка.
Шаблоны-это не то, что вы создаете вручную. Они должны быть сгенерированы приложением tabula, как упомянуто здесь.
Просто скачайте tabula с официального сайта. Как только вы запустите приложение, это будет довольно просто. Вручную щелкните и перетащите каждую таблицу на каждой странице и нажмите кнопку загрузить шаблон сверху.