Я использую Google OCR API, чтобы прочитать документ для себя. Для этого я получаю PDF от пользователя, а затем конвертирую его в jpg, чтобы отправить его в Google - да, я знаю, что могу отправить PDF в Google, но он состоит из большего количества денег, чтобы использовать Google Storage Bucket - и затем он возвращает мне текст, содержащий координаты вершин каждого слова. Проблема в том, что, по-видимому, преобразование из PDF в JPG меняет разрешение, поскольку координаты вершин, возвращаемые Google, не совпадают с координатами в PDF.
Google возвращает что-то подобное после прочтения jpg (что был PDF):
"description": "AMAZON",
"boundingPoly": {
"vertices": [
{
"x": 630,
"y": 121
},
{
"x": 716,
"y": 122
},
{
"x": 716,
"y": 157
},
{
"x": 630,
"y": 156
}
]
}
Сценарий, который я использую для выделения PDF, содержится по ссылке: https://gist.github.com/agentcooper/4c55133f5d95866acdee5017cd318558
Метод, который я создал для выделения это что:
def pdfHighLight():
pdfInput = PdfFileReader(open("./pdf/doc.pdf", "rb"))
pdfOutput = PdfFileWriter()
page1 = pdfInput.getPage(0)
highlight = createHighlight(630, 121, 716, 156, {
"author": "",
"contents": "Bla-bla-bla"
})
addHighlightToPage(highlight, page1, pdfOutput)
pdfOutput.addPage(page1)
outputStream = open("./pdf/output.pdf", "wb")
pdfOutput.write(outputStream)