Ibm cloud 如何将PDF发送给Watson';没有先将文档写入磁盘的情况下的文档转换服务?
我正在尝试使用Watson developer cloud node.js库转换为Watson文档转换服务中的应答单元 在实际的程序(不是这个测试程序)中,我检索文档并动态转换它,而不首先将其写入磁盘。我以前在其他文档中也这样做过,但最新版本的库(v1.7.0)似乎已经改变,不再像我使用它时那样工作。但即使在我开始使用最新版本之前,这个特定文档也不会转换 下面是我正在使用的带注释的测试代码。我已经尝试了几种方法来实现这一点,它们的变体都在下面的var opts={下注释掉了。您必须一次取消其中一种注释才能看到结果Ibm cloud 如何将PDF发送给Watson';没有先将文档写入磁盘的情况下的文档转换服务?,ibm-cloud,ibm-watson,document-conversion,Ibm Cloud,Ibm Watson,Document Conversion,我正在尝试使用Watson developer cloud node.js库转换为Watson文档转换服务中的应答单元 在实际的程序(不是这个测试程序)中,我检索文档并动态转换它,而不首先将其写入磁盘。我以前在其他文档中也这样做过,但最新版本的库(v1.7.0)似乎已经改变,不再像我使用它时那样工作。但即使在我开始使用最新版本之前,这个特定文档也不会转换 下面是我正在使用的带注释的测试代码。我已经尝试了几种方法来实现这一点,它们的变体都在下面的var opts={下注释掉了。您必须一次取消其中一
'use strict';
var bluemix = require('./bluemix');
var extend=require('util')._extend;
var fs=require('fs');
var watson=require('watson-developer-cloud');
var streams = require('memory-streams');
var dcCredentials = extend({
url: '<url>',
version: 'v1',
username: '<username>',
password: '<password>'
}, bluemix.getServiceCreds('document_conversion')); // VCAP_SERVICES
var document_conversion = watson.document_conversion(dcCredentials);
var bookpdf=getBook('ga195486.pdf');
convert(bookpdf);
function getBook(filename)
{
var bl=fs.readFileSync(filename,'utf8');
return bl;
}
function convert(content)
{
var opts={ //uncomment ONE of these
// file: new Buffer(content), //See message #1 below
// file: {value: new Buffer(content), options: {}}, //see message #2 below
// file: {value: new Buffer(content), options: {contentType: "application/pdf"}}, //This used to work. See message #2 (again) below
// file: new streams.ReadableStream(content),//see message #3 below
conversion_target: "ANSWER_UNITS",
content_type:'application/pdf'
};
document_conversion.convert(opts,
function (err, response)
{
if (err)
{
console.log("Error converting doc: ", err);
}
else if (response.answer_units.length==0)
{
var msg="No answer units";
console.log(msg,response);
}
else
{
console.log('Works!');
console.dir(response);
}
}
);
}
//Message #1: This returns:
// No answer units { source_document_id: '',
// timestamp: '2016-05-23T16:18:23.825Z',
// media_type_detected: 'application/pdf',
// metadata: [],
// answer_units: [],
// warnings:
// [ { phase: 'pdf',
// warning_id: 'empty_input_to_converter',
// description: 'The input provided to the converter phase is empty or doesn\'t contain text that can be converted.' },
// { phase: 'normalized_html',
// warning_id: 'empty_input_to_converter',
// description: 'The input HTML document has no body content.' },
// { phase: 'answer_units',
// warning_id: 'empty_input_to_converter',
// description: 'The input provided to the converter phase is empty or doesn\'t contain text that can be converted.' } ] }
//Message #2: These return:
///home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:33
// source.on('error', function() {});
//
//TypeError: source.on is not a function
// at Function.DelayedStream.create (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:33:10)
// at FormData.CombinedStream.append (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/lib/combined_stream.js:43:37)
// at FormData.append (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/node_modules/form-data/lib/form_data.js:68:3)
// at appendFormValue (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/request.js:339:21)
// at Request.init (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/request.js:352:11)
// at new Request (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/request.js:142:8)
// at request (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/node_modules/request/index.js:55:10)
// at createRequest (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/lib/requestwrapper.js:134:10)
// at DocumentConversion.convert (/home/david/git/ccb-contentbridge/node_modules/watson-developer-cloud/services/document_conversion/v1.js:134:10)
// at convert (/home/david/git/ccb-contentbridge/testRedbooks.js:35:24)
//Message #3: This returns and then it hangs there:
//Error converting doc: { code: 400, error: 'Error in the web application' }
“严格使用”;
var bluemix=require('./bluemix');
var extend=require('util')。\u extend;
var fs=需要('fs');
var watson=require('watson-developer-cloud');
var-streams=require('memory-streams');
var dcCredentials=extend({
url:“”,
版本:“v1”,
用户名:“”,
密码:“”
},bluemix.getServiceCreds('document_conversion');//VCAP_服务
var document\u conversion=watson.document\u conversion(dcCredentials);
var bookpdf=getBook('ga195486.pdf');
转换(PDF格式);
函数getBook(文件名)
{
var bl=fs.readFileSync(文件名为'utf8');
返回bl;
}
函数转换(内容)
{
var opts={//取消对其中一个的注释
//文件:新建缓冲区(内容),//请参阅下面的消息#1
//文件:{value:newbuffer(content),选项:{},//参见下面的消息#2
//文件:{value:newbuffer(content),选项:{contentType:“application/pdf”}},//这是用来工作的。请参阅下面的消息#2(再次)
//文件:new streams.ReadableStream(content),//参见下面的消息#3
转换目标:“回答单位”,
内容类型:'application/pdf'
};
文件转换。转换(选项,
功能(错误、响应)
{
如果(错误)
{
console.log(“转换文档时出错:”,err);
}
else if(response.answer\u units.length==0)
{
var msg=“无应答单元”;
日志(消息,响应);
}
其他的
{
console.log('Works!');
console.dir(应答);
}
}
);
}
//消息#1:返回:
//无应答单元{source\u document\u id:'',
//时间戳:“2016-05-23T16:18:23.825Z”,
//检测到媒体类型:'application/pdf',
//元数据:[],
//答复(单位:[],,
//警告:
//[{阶段:'pdf',
//警告\u id:“空\u输入\u到\u转换器”,
//描述:“提供给转换器阶段的输入为空或不包含可转换的文本。”,
//{阶段:'normalized_html',
//警告\u id:“空\u输入\u到\u转换器”,
//description:'输入HTML文档没有正文内容。'},
//{阶段:'回答单位',
//警告\u id:“空\u输入\u到\u转换器”,
//描述:“提供给转换器阶段的输入为空或不包含可转换的文本。”}]}
//信息#2:这些返回:
///home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/node_modules/combined stream/node_modules/delayed stream/lib/delayed_stream.js:33
//on('error',function(){});
//
//TypeError:source.on不是函数
//在Function.DelayedStream.create(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/node_modules/combined stream/node_modules/delayed stream/lib/delayed_stream.js:33:10)
//在FormData.CombinedStream.append(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/node_modules/combined stream/lib/combined_stream.js:43:37)
//在FormData.append(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/node_modules/form data/lib/form_data.js:68:3)
//在appendFormValue(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/request.js:339:21)
//at Request.init(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/Request/Request.js:352:11)
//应新请求(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/Request/Request.js:142:8)
//应请求(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/node_modules/request/index.js:55:10)
//在createRequest(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/lib/requestwrapper.js:134:10)
//在DocumentConversion.convert(/home/david/git/ccb contentbridge/node_modules/watson developer cloud/services/document_conversion/v1.js:134:10)
//转换时(/home/david/git/ccb contentbridge/testRedbooks.js:35:24)
//消息#3:返回,然后挂起:
//转换文档时出错:{code:400,错误:“web应用程序中的错误”}
有人能告诉我我做错了什么吗?该特定文件比文档转换服务当前可以处理的文件要大。不幸的是,我现在没有很好的关于限制的确切信息,但是团队意识到了这一点,并正在寻求改进 如果您可以提供一个以前可以使用但与node.js库的v1.7.0不兼容的示例,我将对此进行研究,希望能够提供更好的信息
哦,在
fs.readfileSync()上指定'utf8'
调用可能会导致您遇到一些问题。看起来Doc Con的限制是50 MB,我们的文档小于50 MB…一定是其他问题。我正在看这个问题。您是否有一个在v1.7.0之前有效但在v1.7.0之后不再有效的示例?