Сравнение использования PyTesseract и PDF модулей и библиотек для распознавания сканов pdf

Что делать если вы столкнулись с некачественным сканом?

PyTesseract — это пакет python для разработки OCR

OCR или же Оптическое распознавание символов (англ. Optical Character Recognition – OCR) – это технология, которая позволяет преобразовывать различные типы документов, такие как отсканированные документы, PDF-файлы или фото с цифровой камеры, в редактируемые форматы с возможностью поиска.

Сравнение использования PyTesseract и PDF модулей и библиотек для распознавания сканов pdf

Так же, для задачи распознавания PDF-сканов подходят модули и библиотеки PDF для Python. Таких библиотек большое множество, для примера рассмотрим PyMuPDF.

PyTesseract

Первым делом, как и всегда, импортируем все необходимые библиотеки и так же указываем путь к cmd PyTesseract:

  1. Cv2(OpenCV) – тоже библиотека компьютерного зрения и машинного обучения, будем применять её для перевода в градации серого и в чёрно-белое изображение,
  2. PyTesseract,
  3. pdf2image – библиотека для конвертации pdf в формат изображения.
import cv2 import pytesseract from pdf2image import convert_from_path
pages = convert_from_path('Zajavlenie_na_zagranpasport_obrazec.pdf', 100) pages[0].save('out.jpg', 'JPEG')

Следующим шагом конвертируем PDF в JPG. Обращаемся к нулевому элементу, т.к. в нашем документе несколько страниц, а нам не нужны все.

Сравнение использования PyTesseract и PDF модулей и библиотек для распознавания сканов pdf

Далее с помощью библиотеки cv2 считываем получившееся изображение и переводим в другую цветовую градацию. С помощью PyTesseract в команде print преобразуем картинку в текст и выводим в консоль.

imgcv=cv2.imread('out.jpg') imgcv=cv2.cvtColor(imgcv, cv2.COLOR_BGR2RGB) print(pytesseract.image_to_string(imgcv, lang='rus'))

Для примера мы брали скан образца заполнения загран. паспорта.

Сравнение использования PyTesseract и PDF модулей и библиотек для распознавания сканов pdf

PyMuPDF

Эта библиотека известна своей высокой производительностью и высоким качеством рендеринга. Отлично подходит для перевода больших PDF документов, как, например, в нашем случае — PDF учебника.

Так же импортируем библиотеки, но в этом примере нам потребуется только одна – PyMuPDF, импортируется как fitz.

import fitz

Теперь открываем сам PDF файл и в цикле по его страницам получаем и выводим текст.

file=fitz.open('Bakulin_A_Gravitaciya_I_Yefir.a6.pdf') for pageNum, page in enumerate(file.pages(), start = 1): text= page.getText() print(text)

Текст распознан, сохранены абзацы, учебник размером в 400 страниц был преобразован в текст за 2 секунды.

Сравнение использования PyTesseract и PDF модулей и библиотек для распознавания сканов pdf

Итог

PyTesseract мощный инструмент компьютерного зрения, может распознавать текст с изображений многих форматов (например, текст на дорожном знаке). Имеет возможность изменения параметров, что может повысить точность распознавания.

PyMuPDF отличная библиотека для преобразования PDF файлов в текст, но при условии, что отсканированный PDF документ в хорошем качестве. Отличается своей скоростью и простотой использования.

В заключении, можно сказать, что если в вашей задаче качественные экземпляры сканов, то не стоит сразу пытаться усложнять и использовать компьютерное зрение, а стоит попробовать модули и библиотеки предназначенные для распознавания PDF. Если же вы столкнулись с некачественным сканом, можно использовать компьютерное зрение и пробовать менять различные параметры.

22
2 комментария

PyMuPDF получает текст только с текстовых pdf. Это меняет дело. Сам несколько дней с этим вожусь. 

1

Может кто знает, чем можно таблички из PDF вынуть более-менее корректно? Хотя бы разбивку по столбцам?

1