Проблема извлечения таблицы без полей в Python Camelot

Я стараюсь извлечь таблицу без полей, как показано на рисунке ниже, которые из PDF-файлов. Установили python-camelot по ссылке " https://github.com/socialcopsdev/camelot" и работают нормально только для граничных таблиц. Пожалуйста, найдите ниже детали

платформа - Linux-4.5.5-300.fc24.x86_64-x86_64-with-fedora-24-Twenty_Four

sys - Python 3.6.1 (по умолчанию, 15 мая 2017 г., 11:42:04)[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)]

NumPy - NumPy 1.15.4

cv2 - OpenCV 3.4.3

камелот - введите описание изображения здесь Камелот 0.3.2

ком /bzL0L.png

3 ответа

Чтобы улучшить обнаруженную область, вы можете увеличить значение edge_tol (по умолчанию: 50), чтобы противодействовать эффекту размещения текста относительно далеко друг от друга по вертикали. Большее значение edge_tol приведет к обнаружению более длинных текстовых сообщений, что приведет к более точному предположению о площади таблицы. Давайте использовать значение 500.

>>> tables = camelot.read_pdf('edge_tol.pdf', flavor='stream', edge_tol=500)
>>> camelot.plot(tables[0], kind='contour')
>>> plt.show()
>>> tables[0].df

Камелот использует решетку по умолчанию, которая опирается на четкие линии, разделяющие ячейки.

Для таблиц без строк вы хотите использовать поток:

tables = camelot.read_pdf('your_file_name.pdf', flavor = 'stream')

Другое решение, которое может помочь, - установить table_areas явно, например, к размеру страницы:

      # A4 portrait, MediaBox[0 0 595 842]
tables = camelot.read_pdf("filename.pdf", table_areas=["0,842,595,0"])

Вы можете узнать размер области либо с помощью функций визуальной отладки Camelot , либо открыв PDF-файл в текстовом редакторе и проверив размеры MediaBox или CropBox (имейте в виду, что они не используют одно и то же соглашение о координатах).

Другие вопросы по тегам