PyMuPDF будет еще одним вариантом для oop файлов изображений. Вот как этого добиться:
import fitz
from PIL import Image
import pytesseract
input_file = 'path/to/your/pdf/file'
pdf_file = input_file
fullText = ""
doc = fitz.open(pdf_file) # open pdf files using fitz bindings
### ---- If you need to scale a scanned image --- ###
zoom = 1.2 # scale your pdf file by 120%
mat = fitz.Matrix(zoom, zoom)
noOfPages = doc.pageCount
for pageNo in range(noOfPages):
page = doc.loadPage(pageNo) # number of pages
pix = page.getPixmap(matrix = mat) # if you need to scale a scanned image
output = '/path/to/save/image/files' + str(pageNo) + '.jpg'
pix.writePNG(output) # skip this if you don't need to render a page
text = str(((pytesseract.image_to_string(Image.open(output)))))
fullText += text
fullText = fullText.splitlines() # or do something here to extract information using regex
Это очень удобно, в зависимости от того, как вы хотите поступать с файлами pdf. Для получения более подробной информации о PyMuPDF эти ссылки могут быть полезны: учебник по PyMuPDF и git для PyMuPDF
Надеюсь, это поможет.
EDIT Другой более простой способ сделать это с помощью PyMuPDF - напрямую интерпретировать обратно преобразованный текст, если у вас чистый формат файлов PDF, после page = doc.loadPage(pageNo)
просто выполните следующие действия: достаточно:
blocks = page.getText("blocks")
blocks.sort(key=lambda block: block[3]) # sort by 'y1' values
for block in blocks:
print(block[4]) # print the lines of this block
Отказ от ответственности: Вышеупомянутая идея использования blocks
исходила от сопровождающего репо. Более подробную информацию можно найти здесь: обсуждение вопросов git