CoderCastrov logo
CoderCastrov
Обработка естественного языка

Как извлечь текст из PDF и изображений для использования в LLM

Как извлечь текст из PDF и изображений для использования в LLM
просмотров
5 мин чтение
#Обработка естественного языка

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

Извлечение текста из PDF

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


Использование библиотек для парсинга PDF

Несколько библиотек на языке Python, таких как PyPDF2, pdfplumber и pdfminer, позволяют извлекать текст из PDF-файлов. PyPDF2 предоставляет простой способ извлечения всего текста из PDF.

Использование библиотеки PyPDF2

import PyPDF2

pdfFile = open('document.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)

text = ""
for page in range(pdfReader.numPages):
    pageObj = pdfReader.getPage(page)
    text += pageObj.extractText()

Использование библиотеки pdfplumber

Библиотека pdfplumber может извлекать текст более чисто, определяя блоки текста:

import pdfplumber

with pdfplumber.open('document.pdf') as pdf:
    pages = pdf.pages
    for page in pages:
        text = page.extract_text()

Использование Google Cloud Vision API

Google Cloud Vision предоставляет расширенную возможность OCR для извлечения текста из отсканированных PDF-файлов. Сначала нам нужно преобразовать каждую страницу PDF в изображение. Затем Vision API может обнаружить текст на каждом изображении:

from google.cloud import vision
import io
from PIL import Image

client = vision.ImageAnnotatorClient()

with open('scanned.pdf', 'rb') as pdf:
    pages = convert_from_bytes(pdf.read()) 

full_text = ""
for page in pages:
   image = vision.Image(content=page.tobytes)
   response = client.document_text_detection(image=image)
   full_text += response.text

Подход Vision API хорошо работает для отсканированных или изображений в формате PDF, где библиотеки парсинга могут не справиться.

Извлечение текста из изображений

Мы также можем извлекать текст, встроенный в файлы изображений, такие как JPEG и PNG, с использованием аналогичных техник OCR:

Использование Google Cloud Vision API

Cloud Vision API предоставляет простой метод text_detection для извлечения текста из изображений:

response = client.text_detection(image=image)
text = response.text

Он может обнаруживать текст различных размеров, шрифтов и ориентаций.

Использование OpenCV и Tesseract OCR

OpenCV можно использовать для обнаружения областей с текстом на изображении. Затем Tesseract OCR может извлечь текст из этих областей:

import pytesseract
import cv2

img = cv2.imread('image.jpg')

# Обнаружение областей с текстом
rects = detector(img)

# Извлечение текста из областей
text = ""
for rect in rects:
   x, y, w, h = rect
   text += pytesseract.image_to_string(img[y:y+h, x:x+w])

Этот подход обеспечивает большую гибкость при обнаружении текста и процессе OCR.

Предобработка и очистка извлеченного текста

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

  • Удалите повторяющиеся пробелы, знаки пунктуации и символы новой строки.
  • Стандартизируйте пробелы между словами.
  • Исправьте распространенные ошибки OCR с помощью правил регулярных выражений или проверки орфографии.
  • Удалите номера страниц, заголовки, подвалы и другой повторяющийся текст.
  • Разделите текст на предложения или абзацы.

Правильная предобработка обеспечивает более качественные текстовые данные для более эффективного обучения языковой модели.

Какие наиболее распространенные случаи использования для извлечения текста из PDF-файлов и изображений?

Некоторые распространенные случаи использования включают:

  • Дополнение обучающих данных для моделей машинного обучения, таких как большие языковые модели. Извлеченный текст предоставляет дополнительные данные высокого качества для улучшения производительности модели.
  • Извлечение текста из отсканированных документов и книжных сканов для обработки естественного языка, таких как индексирование поиска и создание метаданных. Это делает информацию в сканах машинно-читаемой.
  • Извлечение данных из научных статей, отчетов, новостных статей и т. д., опубликованных в формате PDF, для текстового анализа и извлечения знаний. Текст может быть проанализирован для выявления тенденций, идей и т. д.
  • Извлечение текста из презентаций, журналов, плакатов и т. д., содержащих много изображений, для лучшего индексирования и возможности поиска. Это делает текстовое содержимое обнаружимым.
  • Преобразование изображений CAPTCHA в текст для автоматического обнаружения и предотвращения ботов. Извлеченный текст из CAPTCHA можно использовать для проверки.

Какие вызовы возникают при извлечении текста из этих источников?

Некоторые общие вызовы:

  • Артефакты сканера, сгибы, низкое разрешение отсканированных PDF-файлов могут повлиять на точность распознавания текста.
  • Наличие нескольких колонок, рисунков, таблиц и странного форматирования в PDF-файлах затрудняет извлечение текста.
  • Использование нестандартных шрифтов, размеров, цветов, ориентаций и шума на изображениях снижает производительность оптического распознавания символов (OCR).
  • Использование большого количества символов, математических выражений, диаграмм в научных статьях представляет дополнительные вызовы.
  • Необходимо удалить извлеченный текст, содержащий заголовки, подвалы и водяные знаки.
  • Требуется проверка орфографии и нормализация текста для исправления ошибок OCR.
  • Извлеченный текст требует значительной предварительной обработки и очистки перед использованием.

Заключение

Извлечение текста из PDF-файлов и изображений позволяет получить доступ к огромному объему полезных данных для обучения больших языковых моделей. Библиотеки, такие как PyPDF2, pdfplumber и Google Cloud Vision, предоставляют удобные способы извлечения текста. Извлеченный текст все равно требует предварительной обработки и очистки, прежде чем он будет готов для использования языковой моделью. С некоторыми усилиями PDF-файлы и изображения могут стать ценным дополнением к данным для обучения модели.


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

MediumLinkedInTwitterFacebookInstagramWebsite

Вам понравилась эта статья? Если да, то заставьте иконку "Clap" танцевать под своими кликами, как будто это последний день на Земле! Помните, что каждый читатель может аплодировать до 50 раз!

Прежде чем вы уйдете, вот еще несколько статей, которые могут вас заинтересовать:

Node.js vs PHP: Clash of the Titans or Harmonious Coexistence?

The C4 Model for Visualizing Software Architecture