Извлечение отсканированных страниц из PDF с использованием Python - PullRequest
0 голосов
/ 26 мая 2018

У меня много PDF файлов, которые в основном являются отсканированными документами, поэтому каждая страница представляет собой одно отсканированное изображение.Я хочу выполнить OCR и извлечь текст из этих файлов.Я пробовал pytesseract, но он не выполняет OCR непосредственно для pdf файлов, поэтому в качестве обходного пути я хочу извлечь images из PDF файлов, сохранить их в каталоге и затем выполнить OCRиспользуя pytesseract непосредственно на этих изображениях.Есть ли способ в Python для извлечения отсканированных изображений из pdf файлов?или есть ли способ выполнить OCR непосредственно на PDF-файлы?

1 Ответ

0 голосов
/ 26 мая 2018

Этот вопрос был рассмотрен в предыдущих сообщениях о переполнении стека.

Автоматическое преобразование PDF в изображения
Преобразование PDF в серию изображений с помощью Python

Вот скрипт, который может быть полезен: https://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html

Другой метод: https://www.daniweb.com/programming/software-development/threads/427722/convert-pdf-to-image-with-pythonmagick

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

РЕДАКТИРОВАТЬ:

Включая работускрипт для дальнейшего использования.Программа работает на Python3.6 для Windows:

# coding=utf-8
# Extract jpg's from pdf's. Quick and dirty.

import sys

with open("Link/To/PDF/File.pdf", "rb") as file:
    pdf = file.read()

startmark = b"\xff\xd8"
startfix = 0
endmark = b"\xff\xd9"
endfix = 2
i = 0

njpg = 0
while True:
    istream = pdf.find(b"stream", i)
    if istream < 0:
        break
    istart = pdf.find(startmark, istream, istream + 20)
    if istart < 0:
        i = istream + 20
        continue
    iend = pdf.find(b"endstream", istart)
    if iend < 0:
        raise Exception("Didn't find end of stream!")
    iend = pdf.find(endmark, iend - 20)
    if iend < 0:
        raise Exception("Didn't find end of JPG!")

    istart += startfix
    iend += endfix
    print("JPG %d from %d to %d" % (njpg, istart, iend))
    jpg = pdf[istart:iend]
    with open("jpg%d.jpg" % njpg, "wb") as jpgfile:
        jpgfile.write(jpg)

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