PDF-файл содержит только инструкции по размещению символа в координатах x, y на двухмерной плоскости, без знания слов, предложений или таблиц.
Камелот использует PDFMiner под капотом, чтобы группировать символы в слова и слова в предложения. Иногда, когда символы расположены слишком близко, PDFMiner может сгруппировать символы, принадлежащие разным словам, в один.
Поскольку символы в вашей таблице PDF располагаются очень близко, они объединяются в одно слово, и, следовательно, Камелот не может правильно определять столбцы. Вы можете указать разделители столбцов, чтобы получить таблицу в этом случае. Чтобы получить x-координаты разделителей столбцов, вы можете обратиться к визуальному руководству по отладке . Кроме того, вы можете указать split_text=True
, чтобы вырезать слово по указанным разделителям столбцов. Вот код (я получил x-координаты, создавая диаграмму matplotlib текста в PDF, используя $ camelot stream -plot text m27.pdf
):
Использование CLI:
$ camelot --output m27.csv --format csv -split stream -C 72,95,209,327,442,529,566,606,683 m27.pdf
Использование API:
>>> import camelot
>>> tables = camelot.read_pdf('m27.pdf', flavor='stream', columns=['72,95,209,327,442,529,566,606,683'], split_text=True)