Извлечение текста 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.
Распространённые сценарии использования
- Document Management Systems – Быстро находите контракты, счета или политики.
- Content‑Based Search Engines – Обеспечьте внутренние базы знаний с возможностями полнотекстового поиска на Java.
- 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; ознакомьтесь с руководством по миграции для выявления несовместимых изменений.
Ресурсы
- Выпуски GroupDocs.Search для Java: GroupDocs.Search for Java releases
- Документация: GroupDocs Documentation
- Справочник API: GroupDocs API Reference
- Скачать: GroupDocs Downloads
- GitHub: GroupDocs GitHub Repository
- Бесплатная поддержка: GroupDocs Forum
- Временная лицензия: Obtain a Temporary License
Последнее обновление: 2026-07-07
Тестировано с: GroupDocs.Search 25.4 for Java
Автор: GroupDocs