【发布时间】:2014-05-06 08:41:08
【问题描述】:
我是 HTML5+JS 的新手,我想使用 ocrad.js 开发一个混合应用。
从 github 页面下载的 code given below 非常适合我(Chrome 32.0.1)。
<html>
<head>
</head>
<body>
<script src="../ocrad.js"></script>
<script>
function OCRImage(image){
var canvas = document.createElement('canvas')
canvas.width = image.naturalWidth;
canvas.height = image.naturalHeight;
canvas.getContext('2d').drawImage(image, 0, 0)
return OCRAD(canvas)
}
function OCRPath(url, callback){
var image = new Image()
image.src = url;
image.onload = function(){ callback(OCRImage(image)) }
}
function OCRFile(file, callback){
var reader = new FileReader();
reader.onload = function(){ OCRPath(reader.result, callback); }
reader.readAsDataURL(file)
}
</script>
<input type="file" onchange="OCRFile(this.files[0], function(text){alert(text)})">
</body>
</html>
当我在代码中调用 OCRAD() API 时,它给出了 Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': canvas has been tainted by cross-origin data.
我的代码
<html>
<head>
<script src="../ocrad.js"></script>
<body>
<canvas id="cancan" width="800", height="500">Test image</canvas>
<script type="text/javascript">
function imageLoaded(ev) {
element = document.getElementById("cancan");
c = element.getContext("2d");
im = ev.target;
width = element.width;
height = element.height;
c.drawImage(im, 0, 0);
var data1=OCRAD(c);
console.log(data1);
}
im = new Image();
im.src = "message.png";
im.onload = imageLoaded;
</script>
</body>
</html>
我见过类似的Stackoverflow Q&A here,但它并没有帮助我解决问题。请回答是否有任何与 Ocrad.js 合作过的人对此问题有任何评论。
或
还有其他方法可以将我的图像文件(此处为第二个代码示例中的 message.png)作为参数传递给第一个代码示例中的OCRFile() 函数吗? (只是我想将存储在本地文件URL中的图像传递给OCRAD()调用以返回文本。)
提前谢谢.... :)
【问题讨论】:
-
有没有有用的信息请分享一下,或许能帮我解决问题...
-
您需要从与页面相同的来源(file:// 不包括)或从允许跨域使用的服务器加载图像(如果是,请请求跨域使用)。跨度>
-
感谢 Epistemex,John S 在stackoverflow.com/questions/20963172/… 中指出了问题。在我的情况下是否可以允许跨域使用?
-
如果您将相关图像移动到与您的页面相同的来源(域等),它应该可以工作。否则它将取决于外部服务器是否允许。您可以请求使用 CORS,但服务器可能会拒绝它。您可以通过设置
im.crossOrigin = '';在设置src属性来请求。 -
实际上我不希望它在服务器中,而是希望它作为带有网络摄像头的本地 HTML5 应用程序。用例是使用 HTML5 的 Camera API 拍摄照片并将其传递给 OCRAD API。
标签: javascript html5-canvas ocr filereader