Написал на коленке код для работы с OCR Yandex Translate в среде PhantomJS. Для перевода текста картинки с английского на русский. код следующий:
var webPage = require('webpage');
var page = webPage.create();
var page = require('webpage').create();
if(exist('photo.jpg')){
remove('photo.jpg'); //удаление старых отладочных файлов
}
if(exist('example.html')){
remove('example.html'); //удаление старых отладочных файлов
}
page.viewportSize = {
width: 480,
height: 800
};
page.open('https://translate.yandex.ru/ocr', function() {
page.uploadFile('input[id="fileInput"]', 'image.jpg'); //загрузка файла на сервер
page.evaluate(
function( mouseclick_fn ) {
var element = jQuery( 'rect' )[0];
setTimeout(function(){mouseclick_fn( element );},5000);
},
mouseclick
);
setTimeout(function(){page.render('photo.jpg');file('example.html',page.content);phantom.exit();},10000); //для отладки
});
page.onLoadFinished = function() {
console.log("load finished");
};
function remove(file){
var fs = require('fs');
fs.remove(file);
}
function exist(file){
var fs = require('fs');
if (fs.exists(file))
return true;
else
return false;
}
function file(filename,content){
var fs = require('fs');
fs.write(filename, content, 'w');
}
function mouseclick( element ) {
var event = document.createEvent( 'MouseEvents' );
event.initMouseEvent( 'click', true, true, window, 1, 0, 0 );
element.dispatchEvent( event );
}
Нажимать на rect не хочет даже при команде в консоль хрома
document.getElementsByTagName("rect")[0].click
. Думаю эмитировать нажатие мышкой, но все примеры которые брал с интернета тоже не работали. Как заставить этот кусок кода работать? Заранее спасибо.