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

Извлечение текста со всех страниц PDF документа

Извлечение текста из PDF документа является распространенной задачей. В этом примере вы увидите, как Aspose.PDF для Java позволяет извлекать текст со всех страниц PDF документа. Чтобы извлечь текст со всех страниц PDF:

  1. Создайте объект класса TextAbsorber.

  2. Откройте PDF, используя класс Document и вызовите метод Accept коллекции Pages.

  3. Класс TextAbsorber поглощает текст из документа и возвращает его в свойстве Text.

Следующий фрагмент кода показывает, как извлечь текст со всех страниц PDF-документа.

public static void ExtractFromAllPages() {
        // Путь к каталогу документов.

        String filePath = _dataDir + "ExtractTextAll.pdf";

        // Открыть документ
        Document pdfDocument = new com.aspose.pdf.Document(filePath);

        // Создать объект TextAbsorber для извлечения текста
        TextAbsorber textAbsorber = new com.aspose.pdf.TextAbsorber();

        // Применить абсорбер для всех страниц
        pdfDocument.getPages().accept(textAbsorber);

        // Получить извлеченный текст
        String extractedText = textAbsorber.getText();
        try {
            java.io.FileWriter writer = new java.io.FileWriter(_dataDir + "extracted-text.txt", true);
            // Записать строку текста в файл
            writer.write(extractedText);
            // Закрыть поток
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

    }

Извлечение выделенного текста из PDF-документа

В различных сценариях извлечения текста из PDF-документа может возникнуть необходимость извлечь только выделенный текст. Для реализации этой функциональности мы добавили методы TextMarkupAnnotation.GetMarkedText() и TextMarkupAnnotation.GetMarkedTextFragments() в API. Вы можете извлечь выделенный текст из PDF-документа, отфильтровав TextMarkupAnnotation и используя упомянутые методы. Следующий фрагмент кода показывает, как можно извлечь выделенный текст из PDF-документа.

public static void ExtractHighlightedText() {
        Document doc = new Document(_dataDir + "ExtractHighlightedText.pdf");
        // Перебрать все аннотации
        for (Annotation annotation : doc.getPages().get_Item(1).getAnnotations()) {
            // Отфильтровать TextMarkupAnnotation
            if (annotation.getAnnotationType() == AnnotationType.Highlight) {
                HighlightAnnotation highlightedAnnotation = (HighlightAnnotation) annotation;
                // Получить фрагменты выделенного текста
                TextFragmentCollection collection = highlightedAnnotation.getMarkedTextFragments();
                for (TextFragment tf : collection) {
                    // Показать выделенный текст
                    System.out.println(tf.getText());
                }
            }
        }
    }

Доступ к элементам Text Fragment и Segment из XML

Иногда нам нужно получить доступ к элементам TextFragment или TextSegment при обработке PDF-документов, созданных из XML. Aspose.PDF for Android via Java предоставляет доступ к таким элементам по имени. Пример кода ниже показывает, как использовать эту функциональность.

public static void AccessTextFragmentAndSegmentElements() {
    String inXml = "40014.xml";
    Document doc = new Document();
    doc.bindXml(_dataDir + inXml);

    TextSegment segment = (TextSegment) doc.getObjectById("boldHtml");
    segment = (TextSegment) doc.getObjectById("strongHtml");

    System.out.println(segment.getText());
}