У меня есть настоящий PDF-файл (не отсканированный), где мне нужно динамически преобразовать PDF-файл в текстовое содержимое.
Я пытаюсь сделать так, чтобы я мог определить столбцы (на рисунке ниже их 3) и координаты (выделенная область).
Итак, рассмотрите изображение ниже, то, что я пытаюсь сделать, это что-то вроде этого:
{
"1":[
{"row": "Pay In"}],
"2": [
{"row": "Invoice Online Download PDF Questions about this invoice?"}],
"3": [
{"row": "Contact us"}]
}
Как видите, у меня есть два разделителя столбцов (которые создадут три столбца), и я также определил область, которую необходимо обрезать.
Я видел, что могу использовать 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 процентов «на страницу».
Кто-нибудь может направить меня в правильном направлении при таком расчете?