Я пытаюсь преобразовать некоторые файлы PDF в блоки ответов с помощью службы преобразования документов Watson. Все эти файлы заархивированы в один большой файл .zip, который загружен на мой сервер Bluemix, на котором запущено приложение Node.js. Приложение разархивирует файлы в памяти и попытается отправить каждый по очереди в сервис конвертации:
var document_conversion = watson.document_conversion(dcCredentials);
function createCollection(res, solrClient, docs)
{
for (var doc in docs) //docs is an array of objects describing the pdf files
{
console.log("Converting: %s", docs[doc].filename);
//make a stream of this pdf file
var rs = new Readable; //create the stream
rs.push(docs[doc].data); //add pdf file (string object) to stream
rs.push(null); //end of stream marker
document_conversion.convert(
{
file: rs,
conversion_target: "ANSWER_UNITS"
},
function (err, response)
{
if (err)
{
console.log("Error converting doc: ", err);
.
.
.
etc...
Каждый раз служба конвертации возвращает ошибку 400 с описанием "Ошибка в веб-приложении".
Почесав голову в течение двух дней, пытаясь выяснить причину этого довольно бесполезного сообщения об ошибке, я в значительной степени решил, что проблема должна заключаться в том, что служба преобразования не может определить, какой тип файла отправляется, поскольку нет связанное с ним имя файла. Это, конечно, всего лишь предположение с моей стороны, но я не могу проверить эту теорию, потому что я не знаю, как предоставить эту информацию службе, не записывая каждый файл на диск и не читая его обратно.
Кто-нибудь может помочь?