Извлечение таблиц из PDF на Java

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

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

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

  1. Откройте исходный PDF в объекте Document.
  2. Обработайте каждую страницу с помощью TableAbsorber.
  3. Переберите обнаруженные таблицы, строки и ячейки, затем выведите извлечённый текст.
public static void extract(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Page page : document.getPages()) {
            TableAbsorber absorber = new TableAbsorber();
            absorber.visit(page);
            for (AbsorbedTable table : absorber.getTableList()) {
                System.out.println("Table ----");
                for (AbsorbedRow row : table.getRowList()) {
                    System.out.println("Row:");
                    StringBuilder rowText = new StringBuilder();
                    for (AbsorbedCell cell : row.getCellList()) {
                        StringBuilder cellText = new StringBuilder();
                        for (TextFragment fragment : cell.getTextFragments()) {
                            for (TextSegment segment : fragment.getSegments()) {
                                cellText.append(segment.getText());
                            }
                        }
                        rowText.append(" | ").append(cellText);
                    }
                    System.out.println(rowText);
                }
            }
        }
    }
}