Разделение сложных файлов PDF с помощью службы преобразования документов Watson

Мы внедряем систему вопросов и ответов, используя Watson Discovery Service(WDS). Нам потребовался каждый блок ответа, доступный в одном документе. У нас есть сложные файлы PDF как корпус. PDF-файлы содержат два столбца данных, таблиц и изображений. Вместо того, чтобы принимать целые PDF-файлы как корпус для WDS и использовать отрывочный поиск, мы используем Watson Document Conversion Service(WDC), чтобы разбить каждый PDF-файл на блоки ответов, а позже мы принимаем эти блоки ответов на WDS.

У нас есть две проблемы со службой преобразования документов Watson для сложного разделения PDF.

  1. Мы ожидаем, что каждый заголовок является заголовком, а соответствующий текст - данными (ответом). Однако он разбивает каждую главу на единицу ответа. Есть ли способ разделить двухколоночный документ по заголовку?
  2. Если входной PDF-файл содержит таблицу, служба преобразования документов считывает структурированные данные, доступные в PDF-файле, в виде простого текста (отсутствует форматирование таблицы). Есть ли способ прочитать структурированные данные из PDF, чтобы ответить на блок?

1 ответ

Я бы порекомендовал вам сначала преобразовать PDF в нормализованный HTML, используя этот параметр:

   "conversion_target": "normalized_html"

и проверить сгенерированный HTML. Ищите места, где заголовки (<h1>, <h2>, ..., <h6>) обнаружены. Это теги, которые будут использоваться для разделения на единицы ответа при переключении обратно на answer_units, Причина, по которой вы в настоящее время видите, что каждая глава разбита как единица ответа, заключается в том, что каждая глава, вероятно, начинается с заголовка, но внутри каждой главы заголовки не обнаруживаются.

Чтобы сгенерировать больше блоков ответов, вам нужно настроить входные конфигурации PDF, как описано здесь, чтобы с шага преобразования PDF в HTML генерировалось больше заголовков и, следовательно, генерировалось больше блоков ответов.

Например, следующая конфигурация будет определять заголовки на 6 различных уровнях на основе определенных характеристик шрифта для каждого уровня:

{
  "conversion_target": "normalized_html",
  "pdf": {
    "heading": {
      "fonts": [
        {"level": 1, "min_size": 24},
        {"level": 2, "min_size": 18, "max_size": 23, "bold": true},
        {"level": 3, "min_size": 14, "max_size": 17, "italic": false},
        {"level": 4, "min_size": 12, "max_size": 13, "name": "Times New Roman"},
        {"level": 5, "min_size": 10, "max_size": 12, "bold": true},
        {"level": 6, "min_size": 9, "max_size": 10, "bold": true}
      ]
    }
  }
}

Вы можете начать с конфигурации, подобной этой, и продолжать изменять ее до тех пор, пока созданный нормализованный HTML-код не будет содержать заголовки в тех местах, которые, как вы ожидаете, будут в единицах ответа. Затем возьмите настроенную конфигурацию, переключитесь на answer_units и собрать все это вместе:

{
  "conversion_target": "answer_units",
  "answer_units": {
    "selector_tags": ["h1", "h2", "h3", "h4", "h5", "h6"]
  },
  "pdf": {
    "heading": {
      "fonts": [
        {"level": 1, "min_size": 24},
        {"level": 2, "min_size": 18, "max_size": 23, "bold": true},
        {"level": 3, "min_size": 14, "max_size": 17, "italic": false},
        {"level": 4, "min_size": 12, "max_size": 13, "name": "Times New Roman"},
        {"level": 5, "min_size": 10, "max_size": 12, "bold": true},
        {"level": 6, "min_size": 9, "max_size": 10, "bold": true}
      ]
    }
  }
}

Что касается вашего второго вопроса о таблицах, к сожалению, нет способа преобразовать содержимое таблицы в единицы ответа. Как объяснено выше, генерация блока ответа основана на обнаружении курса. При этом, если между двумя обнаруженными заголовками есть таблица, эта таблица будет частью блока ответа, как и любое другое содержимое между двумя заголовками.

Другие вопросы по тегам