Найти в Дзене
Калинкин

РАСПОЗНАВАНИЕ текста в PDF-файлах с помощью Python

Привет, ребята! Возможно, вы слышали о распознавании текста с использованием Python. Самой известной библиотекой является tesseract, спонсируемая Google. Выполнить распознавание изображения очень просто. Проблема возникает, когда вы хотите выполнить распознавание текста поверх PDF-документа. Я работаю над проектом, в котором хочу вводить PDF-файлы, извлекать из них текст, а затем добавлять текст в базу данных. Мне пришлось много искать, прежде чем я наткнулся на окончательное решение. Итак, не теряя времени, давайте начнем. Установка Tesseract Установить tesseract на различные операционные системы очень просто. Для простоты я буду использовать Ubuntu в качестве примера. В Ubuntu вам просто нужно запустить следующую команду в терминале: sudo apt-get install tesseract-ocr Он установит Tesseract вместе с поддержкой трех языков. Установка PyOCR Теперь нам нужно установить привязки Python для tesseract. К счастью, там есть несколько довольно хороших привязок. Мы будем устанавливать последню
Оглавление
Как распознать текст в PDF
Как распознать текст в PDF

Привет, ребята! Возможно, вы слышали о распознавании текста с использованием Python. Самой известной библиотекой является tesseract, спонсируемая Google. Выполнить распознавание изображения очень просто. Проблема возникает, когда вы хотите выполнить распознавание текста поверх PDF-документа.

Я работаю над проектом, в котором хочу вводить PDF-файлы, извлекать из них текст, а затем добавлять текст в базу данных. Мне пришлось много искать, прежде чем я наткнулся на окончательное решение. Итак, не теряя времени, давайте начнем.

Установка Tesseract

Установить tesseract на различные операционные системы очень просто. Для простоты я буду использовать Ubuntu в качестве примера. В Ubuntu вам просто нужно запустить следующую команду в терминале:

sudo apt-get install tesseract-ocr

Он установит Tesseract вместе с поддержкой трех языков.

Установка PyOCR

Теперь нам нужно установить привязки Python для tesseract. К счастью, там есть несколько довольно хороших привязок. Мы будем устанавливать последнюю версию:

pip install git+https://github.com/jflesch/pyocr.git

Установка Wand и PIL

Прежде чем мы сможем двигаться дальше, нам также нужно установить две другие зависимости. Первая из них - Wand. Это привязки Python для Imagemagick. Мы будем использовать ее для преобразования PDF-файлов в изображения:

pip install wand

Мы также будем использовать PIL, потому что PyOCR в этом нуждается. Вы можете ознакомиться с официальными документами о том, как установить его в свою операционную систему.

Погнали

Давайте начнем писать наш скрипт. Прежде всего, мы импортируем необходимые библиотеки:

from wand.image import Image
from PIL import Image as PI
import pyocr
import pyocr.builders
import io

Примечание: я импортировал изображение из PIL как PI, потому что в противном случае оно конфликтовало бы с модулем изображения из wand.image.

Приступайте

Теперь нам нужно получить дескриптор библиотеки распознавания текста (в нашем случае tesseract) и язык, который будет использоваться pyocr.

tool = pyocr.get_available_tools()[0] lang = tool.get_available_languages()[1]

Мы использовали второй язык в tool.get_available_languages(), потому что, когда я проверял в последний раз, это был английский.

Теперь нам нужно настроить два списка, которые будут использоваться для хранения наших изображений и final_text.

req_image = [] final_text = []

Следующий шаг - открыть PDF-файл с помощью wand и преобразовать его в jpeg. Давайте сделаем это!

image_pdf = Image(filename="./PDF_FILE_NAME", resolution=300) image_jpeg = image_pdf.convert('jpeg')

Примечание: Замените PDF_FILE_NAME допустимое имя файла PDF в текущем пути.

wand преобразовал все отдельные страницы в PDF в отдельные двоичные объекты изображения. Мы можем перебирать их в цикле и добавлять в виде большого двоичного объекта в список req_image.

for img in image_jpeg.sequence:
img_page = Image(image=img)
req_image.append(img_page.make_blob('jpeg'))

Теперь нам просто нужно выполнить распознавание больших двоичных объектов изображения. Это очень просто.

for img in req_image:
txt = tool.image_to_string(
PI.open(io.BytesIO(img)),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
final_text.append(txt)

Теперь весь распознанный текст добавлен в список final_text. Вы можете использовать его любым удобным для вас способом. Я надеюсь, что этот урок был полезен для вас, ребята!

Если у вас есть какие-либо комментарии и предложения, пожалуйста, дайте мне знать в разделе комментариев ниже.

До скорой встречи! 🙂 Ах, да! Чуть не забыл! ...подпишись)) Плиз (❁´◡`❁)