node-ocr обертка для ABBYY Cloud API ( http://ocrsdk.com/ ).
Работает с nodejs 0.6.x.
npm install node-ocr
ocr = require("node-ocr").createWrapper(appId, appPwd)
appId
и appPwd
- опциональные параметы, если не заданы, идентификатор и пароль
беруться из переменных окружения ABBYY_APPID
и ABBYY_PWD
соответственно.
Обработчик получает состояние err
и список заданий taskList
- объект, содержащий
ключ task, значением которого является массив заданий.
ocr.listTasks (err, tasksList) ->
unless err
console.dir(tasksList)
Передаваемые параметры: путь к файлу, опции, обработчик.
Обработчик получает состояние err
и идентификатор задания id
.
ocr.applyToFile "/tmp/filename.jpeg", {outputFormat: "rtf"}, (err, id) ->
unless err
console.log "task id = #{id}"
Передаваемые параметры: буфер, опции, обработчик.
Обработчик получает состояние err
и идентификатор задания id
.
ocr.applyToBuffer buffer, {outputFormat: "xml"}, (err, id) ->
unless err
console.log "task id = #{id}"
Передаваемые параметры: идентификатор задачи и обработчик.
Обработчик получает состояние err
и объект статуса (stat
), содержащий ключ task.
ocr.getTaskStatus taskId, (err, stat) ->
unless err
console.dir(stat.task)
Передаваемые параметры: идентификатор задачи, опции, обработчик.
Обработчик получает состояние err
и объект с ключом resultUrl, содержащим путь к обработанному файлу.
ocr.waitTaskEnd id, opts, (err, data) ->
unless err
console.dir(data.resultUrl)
Сейчас эта функция не работает, потому что текст возвращается в cp1251.
sys = require "util"
ocr = require("node-ocr").createWrapper()
opts = outputFormat: "xml"
filename = "/tmp/filewithtext.png"
ocr.applyToFile filename, opts, (err, id) ->
unless err
ocr.waitTaskEnd id, opts, (err, data) ->
console.log "what we got: #{sys.inspect data, null, null}"
else
console.log "Error found: #{sys.inspect err}"
# ... проверить задания
ocr.listTasks (err, data) ->
unless err
console.log "fetch data:\n#{sys.inspect data, null, null}"
else
console.log "error :\n#{sys.inspect err}"
sys = require("util")
ocr = require("node-ocr").createWrapper()
opts = {outputFormat: "txt"} # с русским текстом пока проблемы
filename = "/tmp/filewithtext.png"
ocr.applyToFile(filename, opts, function (err, id) {
if (null === err) {
ocr.waitTaskEnd(id, opts, function (err, data) {
console.log("what we got: " + sys.inspect( data, null, null));
});
} else {
console.log("Error found: " + sys.inspect(err));
}
});
# ... проверить задания
ocr.listTasks( function (err, data) {
if (null === err) {
console.log("fetch data:\n" + sys.inspect(data, null, null));
} else {
console.log("error :\n#" + sys.inspect(err));
}
})
- Ключи API можно изменить при вызове
createWrapper
- Загрузка изображений
- Состояние задачи обработки
- Ожидание конца обработки