Обрезка PDF документа на основе столбцов и координат - PullRequest
0 голосов
/ 20 мая 2019

У меня есть настоящий PDF-файл (не отсканированный), где мне нужно динамически преобразовать PDF-файл в текстовое содержимое.

Я пытаюсь сделать так, чтобы я мог определить столбцы (на рисунке ниже их 3) и координаты (выделенная область).

Итак, рассмотрите изображение ниже, то, что я пытаюсь сделать, это что-то вроде этого:

{
"1":[
  {"row": "Pay In"}], 
"2": [
  {"row": "Invoice Online Download PDF Questions about this invoice?"}],
"3": [
  {"row": "Contact us"}]
}

enter image description here

Как видите, у меня есть два разделителя столбцов (которые создадут три столбца), и я также определил область, которую необходимо обрезать.

Я видел, что могу использовать pdftotext для извлечения текста из файла PDF.

Я использую PyPDF2 для получения прямоугольного объекта PDF, например:

from PyPDF2 import PdfFileReader

# Get PDF file dimension. (Only first page)
MyPDF = PdfFileReader(open(pdf_file, 'rb'))

x = MyPDF.getPage(0).mediaBox[0]
y = MyPDF.getPage(0).mediaBox[1]
W = MyPDF.getPage(0).mediaBox[2]
H = MyPDF.getPage(0).mediaBox[3]
width = ((W * 96) / 72)
height = ((H * 96) / 72)

col = COLUMNS[str(1)]

for i, col in enumerate(COLUMNS):
    col = COLUMNS.get(str(col))

    os.system('pdftotext -x 0 -y 0 -W 0 -H 0 my.pdf my' + str(i+1) + '.txt -layout')

Теперь height и width содержат размеры в пунктах, например:

print(MyPDF.getPage(0).mediaBox)

Дает:

RectangleObject([0, 0, 612, 792])

Я пытаюсь сделать так, чтобы я мог обслуживать позиции разделителя столбцов в процентах, например:

{"1":{"position":"10"}, "2":{"position": "90"}}

Теперь вот где я застрял. Понятия не имею, смогу ли я получить желаемый результат с помощью команды pdftotext -x -y -W -H.

Я думал о том, чтобы как-то рассчитать позицию на странице на основе процента. Так, например, первый разделитель (10%) будет содержать весь текст слева до 10 процентов «на страницу».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...