Разделение сложных PDF-файлов с помощью Watson Document Conversion Service

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

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

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

person Prashanth M    schedule 18.09.2017    source источник


Ответы (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}
      ]
    }
  }
}

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

person Anton Prevosti    schedule 18.09.2017
comment
Спасибо за ответ Антон Превости. Мы попробовали подходы, предложенные выше, и выявили несколько проблем. Я поделился своим исследованием на форуме разработчиков ниже URL. developer.ibm.com/answers/questions/401675/view.html - person Prashanth M; 25.09.2017