Я пытаюсь более эффективно использовать pdfminer, так как он действительно практичен из-за того, что у него не так много зависимостей, как у других модулей манипулирования pdf.
Поэтому я пытаюсь понять, как его использовать, просматривая деревья функций и подсказки, но есть некоторые странные вещи, которые я не совсем понимаю.
Например, существует несколько функций PDFStreamparser, одна в pdfminer.parser и одна в pdfminer.pdfdocument. Обращение за помощью к ним даст только ту же помощь.
Это поведение воспроизводится несколько раз.
Кроме того, при использовании dir для объекта pdfminer.layout.LTImage dir выдает другой список в зависимости от того, вызываю ли я его из библиотеки или из реального объекта, извлеченного из документа и идентифицированного как экземпляр LTImage с помощью isintance, и по типу (объекту) (ниже приведены соответствующие списки, сокращенные для примитивных методов и атрибутов):
print(dir(LTImage_trueobject)):
['analyze', 'bbox', 'bits', 'colorspace', 'hdistance', 'height', 'hoverlap', 'imagemask', 'is_empty', 'is_hoverlap', 'is_voverlap', 'name', 'set_bbox', 'srcsize', 'stream', 'vdistance', 'voverlap', 'width', 'x0', 'x1', 'y0', 'y1']
print(dir(pdfminer.layout.LTImage)):
['analyze', 'hdistance', 'hoverlap', 'is_empty', 'is_hoverlap', 'is_voverlap', 'set_bbox', 'vdistance', 'voverlap']
Я не понимаю, откуда взялись bbox, биты, цветовое пространство и т. Д. Методы / атрибуты? Это из-за какого-то наследства? В таком случае, как я могу выбрать, от какого класса наследуется метод или атрибут? Я знаю, что использовал что-то подобное в прошлом, но не могу найти это снова.
Я знаю, что лучше всего было бы проверить кодовую базу, но она огромна, и у меня нет опыта в создании пакетов, поэтому я могу пропустить вещи.