Извлечение текста из загруженного PDF и сохранение его в базе данных

Вопрос или проблема

У меня есть HTML-форма, где пользователь может загрузить PDF.
Я хочу извлечь весь текст из PDF, найти в нем определенные слова и затем сохранить их в своей базе данных. Есть идеи?
Я не прошу вас предоставить весь код, конечно, но что-то, с чего можно начать. Например, библиотека или что-то вроде OCR, но бесплатное.

Если PDF был создан программным образом, а не отсканирован, библиотека Python pdfminer может извлечь текст для вас.

Она и Python бесплатны, свободны и с открытым исходным кодом и доступны для большинства платформ.

Что насчет этого вопроса на S.O?

Статья OCR в PHP: Чтение текста из изображений с помощью Tesseract объясняет больше.

Есть проект PhpOcr на SourceForge.

Tesseract кажется вашим лучшим вариантом.

Ответ или решение

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

  1. Выбор библиотеки для извлечения текста из PDF:
    Если ваш PDF-файл был создан программно (например, из текстов), то хорошим выбором будет библиотека pdfminer для Python. Эта библиотека позволяет извлекать текстовый контент с сохранением структуры текста. Установить её можно с помощью pip:

    pip install pdfminer.six

    Пример кода для извлечения текста:

    from pdfminer.high_level import extract_text
    
    def extract_text_from_pdf(pdf_path):
       text = extract_text(pdf_path)
       return text

    Если ваш PDF — это отсканированные страници, вам понадобится OCR (оптическое распознавание символов). Для этого отлично подойдёт библиотека Tesseract, которую можно использовать в комбинации с Python. Она бесплатна и имеет широкие возможности. Установить Tesseract можно с помощью следующих команд:

    sudo apt-get install tesseract-ocr
    pip install pytesseract

    Пример кода для использования Tesseract:

    import pytesseract
    from pdf2image import convert_from_path
    
    def extract_text_from_scanned_pdf(pdf_path):
       images = convert_from_path(pdf_path)
       text = ''
       for image in images:
           text += pytesseract.image_to_string(image)
       return text
  2. Поиск слов в извлечённом тексте:
    После того как текст будет извлечён, вы можете использовать методы поиска (например, in в Python) для нахождения конкретных слов.

    Пример:

    def search_words_in_text(text, words):
       found_words = {word: text.count(word) for word in words if word in text}
       return found_words
  3. Сохранение данных в базу данных:
    Для хранения извлечённого текста и найденных слов в базе данных, вы можете использовать библиотеку для работы с базами данных, например, SQLAlchemy для SQL баз. Ниже пример кода, как это можно сделать:

    from sqlalchemy import create_engine, Column, String, Integer
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    Base = declarative_base()
    
    class PDFData(Base):
       __tablename__ = 'pdf_data'
       id = Column(Integer, primary_key=True)
       extracted_text = Column(String)
       found_words = Column(String)
    
    engine = create_engine('sqlite:///pdf_data.db')
    Base.metadata.create_all(engine)
    Session = sessionmaker(bind=engine)
    session = Session()
    
    def save_to_database(extracted_text, found_words):
       pdf_data = PDFData(extracted_text=extracted_text, found_words=str(found_words))
       session.add(pdf_data)
       session.commit()
  4. Объединение всех шагов:
    Вы можете создать конечную функцию, объединяющую все вышеперечисленные шаги:

    def process_pdf(pdf_path, words_to_search):
       if is_scanned(pdf_path):  # Определите, является ли PDF отсканированным
           text = extract_text_from_scanned_pdf(pdf_path)
       else:
           text = extract_text_from_pdf(pdf_path)
    
       found_words = search_words_in_text(text, words_to_search)
       save_to_database(text, found_words)

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

Оцените материал
Добавить комментарий

Капча загружается...