Поиск по сайту:

Python – чтение содержимого PDF с использованием OCR (оптическое распознавание символов)


PDF означает «Portable Document Format» и является одним из популярных форматов файлов, которыми можно обмениваться между устройствами. Потому что файлы в формате PDF содержат текст, который нельзя изменить. Это обеспечивает пользователю более удобочитаемость и стабильность формата файлов. Несмотря на то, что читать текст в формате PDF проще, копирование содержимого из него может занять много времени. Чтобы облегчить процесс чтения, используется инструмент OCR (оптическое распознавание символов).

Чтение содержимого PDF с помощью OCR

В этой статье мы рассмотрим оптическое распознавание символов или OCR, которое представляет собой электронный инструмент, который помогает преобразовывать отсканированные изображения или рукописный текст в редактируемые компьютерные файлы. Python поддерживает несколько сторонних библиотек, которые используют технологию OCR для чтения содержимого из PDF-файлов.

Одной из таких библиотек является Pytesseract. Это механизм оптического распознавания символов (OCR) для Python, внутри которого используется Google Tesseract-OCR. Pytesseract может идентифицировать текст в файлах PDF на более чем 100 языках, включая английский, хинди, арабский и китайский, а также другие.

Оптическое распознавание символов:

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

Python обеспечивает гибкость, необходимую для эффективного взаимодействия со многими коммерчески доступными библиотеками OCR, такими как pytesseract, что упрощает работу наших проектов за счет их масштабирования на больших наборах данных без необходимости взаимодействия с человеком. Когда мы объединяем эту мощь с различными концепциями машинного обучения, такими как обработка естественного языка (NLP) и обнаружение объектов, нет предела тому, насколько далеко мы можем раздвинуть границы возможностей программного рендеринга компьютера.

Программа Python для чтения содержимого PDF с использованием OCR с методом try и кроме

Входные данные предоставляются в виде PDF-файла с именем sample.pdf, а затем используются инструменты оптического распознавания символов; он распознает текст в PDF-файле и, наконец, возвращает образец текста. Для этого используется метод try и кроме.

Алгоритм

  • Шаг 1 — Импортируйте необходимые модули, такие как os и pytesseract.

  • Шаг 2 — Модуль изображения импортируется из пакета PIL.

  • Шаг 3 — Указанные PDF-файлы преобразуются в изображения с помощью функции с именем «convert_from_path».

  • Шаг 4 — Функция определяется с одним параметром в качестве имени входного файла.

  • Шаг 5 — Инициализируется пустой список

  • Шаг 6 — Метод try преобразует каждый текст в PDF-файле в текст.

  • Шаг 7 — Для каждого изображения в списке изображений сгенерируйте имя файла для каждого изображения и сохраните его в формате JPEG.

  • Шаг 8 — Текст извлекается с помощью модуля pytesseract, а затем добавляется в инициированный пустой список.

  • Шаг 9. Если при выполнении вышеуказанных шагов возникло какое-либо исключение, распечатайте его.

  • Шаг 10 — Создайте имя выходного файла, удалив расширение из имени входного файла и добавив расширение .txt.

  • Шаг 11 — Запишите извлеченный текст в выходной файл и верните имя выходного файла.

  • Шаг 12 — Определите переменную pdf_file с именем входного файла.

  • Шаг 13 — Вызовите функцию read_pdf с переменной pdf_file в качестве входных данных и распечатайте ее выходные данные.

Пример

# Importing the os module to perform file operations
import os  
# Importing the pytesseract module to extract text from images
import pytesseract as tess  
# Importing the Image module from the PIL package to work with images
from PIL import Image  
# Importing the convert_from_path function from the pdf2image module to convert PDF files to images
from pdf2image import convert_from_path  

#This function takes a PDF file name as input and returns the name of the text file that contains the extracted text.
def read_pdf(file_name):   
    # Store all pages of one file here:
    pages = []

    try:
        # Convert the PDF file to a list of PIL images:
        images = convert_from_path(file_name)  

        # Extract text from each image:
        for i, image in enumerate(images):
          # Generating filename for each image
            filename = "page_" + str(i) + "_" + os.path.basename(file_name) + ".jpeg"  
            image.save(filename, "JPEG")  
          # Saving each image as JPEG
            text = tess.image_to_string(Image.open(filename))  # Extracting text from each image using pytesseract
            pages.append(text)  
          # Appending extracted text to pages list

    except Exception as e:
        print(str(e))

    # Write the extracted text to a file:
    output_file_name = os.path.splitext(file_name)[0] + ".txt"  # Generating output file name
    with open(output_file_name, "w") as f:
        f.write("\n".join(pages))  
      # Writing extracted text to output file

    return output_file_name

#print function returns the final converted text 
pdf_file = "sample.pdf"
print(read_pdf(pdf_file))

Вход

Выход

Заключение

В 21 веке обработка данных является наиболее сложной задачей для организаций с большим объемом данных, а с развитием науки о данных и машинного обучения доступ к ним стал проще. Файлом, который лучше всего передавать без каких-либо изменений, является PDF-файл, поэтому этот подход помогает людям конвертировать их в текстовый файл.

Статьи по данной тематике