Извлечение текста PDF на Java – Создание индекса с GroupDocs.Search

В этом практическом руководстве вы узнаете how to extract pdf text java из PDF‑файлов, сериализуете извлечённое содержимое и создадите высокопроизводительный поисковый индекс. Независимо от того, создаёте ли вы внутреннюю базу знаний, портал поиска контрактов или собственный поисковый движок, нижеописанные шаги проведут вас через всё — от извлечения текста из PDF до выполнения мощных полнотекстовых запросов. Давайте погрузимся и посмотрим, почему GroupDocs.Search делает весь процесс плавным и масштабируемым.

Быстрые ответы

Метод index.search выполняет запрос к созданному индексу и возвращает список совпадающих документов с оценками релевантности.

  • Какова основная цель? To extract pdf text java from PDF files and create a searchable document index with GroupDocs.Search.
  • Какая версия библиотеки? GroupDocs.Search 25.4 (or the latest release).
  • Нужна ли лицензия? A free trial works for development; a full license is required for production.
  • Могу ли я индексировать PDF? Yes—extract PDF text and add it to the index.
  • Как выполнить поиск? Use the index.search(query) method after adding data.

Что такое индекс документов?

Индекс документов — это структурированная коллекция поисковых терминов, извлечённых из ваших файлов. Он сопоставляет каждый термин с документами, в которых он встречается, обеспечивая быстрый полнотекстовый поиск по большим репозиториям и сокращая время поиска с минут до миллисекунд, при этом поддерживая функции ранжирования и релевантности.

Почему использовать GroupDocs.Search для Java?

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

Требования

  • GroupDocs.Search for Java (Version 25.4 or newer).
  • Java Development Kit (JDK) совместимый с вашей версией GroupDocs.
  • IDE, например IntelliJ IDEA или Eclipse.
  • Maven для управления зависимостями.

Настройка GroupDocs.Search для Java

Сначала добавьте библиотеку в ваш проект.

Настройка Maven
Include the following in your pom.xml file:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/search/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

Прямое скачивание
В качестве альтернативы загрузите последнюю версию с GroupDocs.Search for Java releases.

Приобретение лицензии

  • Free Trial – Тестируйте все функции с временной лицензией.
  • Purchase – Получите полный доступ и приоритетную поддержку.

Как извлечь текст из PDF (и других документов)

Загрузите ваш PDF (или поддерживаемый документ) с помощью класса Extractor, настройте параметры извлечения и вызовите extractText(). Этот однострочный вызов возвращает необработанный или отформатированный текст, готовый к индексации.

Класс Extractor — основной компонент GroupDocs.Search, который читает документ и генерирует простой или отформатированный текст.

// ```java
String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
// ```java
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);

Совет: Set setUseRawTextExtraction(true) if you need plain text without formatting.

Как сериализовать извлечённые данные

Сериализация преобразует объект извлечённого текста в массив байтов, позволяя сохранять его на диск или передавать по сети для последующей индексации.

Утилита SerializationUtil предоставляет статические методы для преобразования объектов в байтовые потоки и обратно.

// ```java
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();

Как десериализовать извлечённые данные

Когда вы готовы построить индекс, десериализуйте ранее сохранённый массив байтов обратно в исходный объект извлечения.

Метод deserialize восстанавливает точное состояние результата извлечения, гарантируя отсутствие потери данных между сеансами.

// ```java
ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);

Как создать индекс документов

Создайте объект Index, укажите папку хранения и настройте параметры индексации, такие как векторы терминов и обработка стоп‑слов.

Класс Index представляет поисковый контейнер, содержащий все термины, ссылки на документы и метаданные.

// ```java
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);

Как добавить данные в индекс и выполнить поиск

Добавьте десериализованный результат извлечения в индекс с помощью index.add(), затем выполните запрос с помощью index.search() для мгновенных результатов.

Метод add регистрирует термины документа в индексе, а search выполняет запрос по этим терминам.

// ```java
ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
// ```java
String query = "ipsum";
SearchResult result = index.search(query);

Совет профессионала: Use index.search("your query", SearchOptions) to fine‑tune relevance ranking.

Распространённые сценарии использования

  1. Document Management Systems – Быстро находите контракты, счета или политики.
  2. Content‑Based Search Engines – Обеспечьте внутренние базы знаний с возможностями полнотекстового поиска на Java.
  3. Data Archiving Solutions – Индексируйте исторические записи для мгновенного доступа.

Соображения по производительности

Метод setStoreTermVectors(boolean) настраивает, сохраняются ли векторы терминов в индексе, влияя на размер индекса и производительность запросов.

  • Memory Management: Увеличьте размер кучи JVM (например, -Xmx4g), когда обрабатываете пакеты более 500 МБ.
  • Indexing Options: Отключите векторы терминов (setStoreTermVectors(false)), чтобы уменьшить размер индекса до 30 %.
  • Regular Updates: Поддерживайте GroupDocs.Search в актуальном состоянии; каждый минорный релиз включает улучшения скорости в среднем на 10‑15 %.

Часто задаваемые вопросы

Q: Как эффективно обрабатывать очень большие PDF‑файлы?
A: Потоково считывайте файл с помощью Extractor и обрабатывайте его частями; также увеличьте размер кучи JVM при необходимости.

Q: Можно ли настроить синтаксис поискового запроса?
A: Да — GroupDocs.Search поддерживает логические операторы, шаблоны и поиск по близости.

Q: Что делать, если сериализация не удалась?
A: Убедитесь, что все объекты реализуют Serializable, и перехватите IOException для записи деталей.

Q: Можно ли индексировать только определённые разделы документа?
A: Конечно — настройте ExtractionOptions для фильтрации страниц или разделов перед индексацией.

Q: Как обновить до более новой версии GroupDocs.Search?
A: Обновите номер версии в вашем pom.xml и выполните mvn clean install; ознакомьтесь с руководством по миграции для выявления несовместимых изменений.

Ресурсы


Последнее обновление: 2026-07-07
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs

Связанные руководства