Как использовать ocr в node.js с буферным изображением? - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно создать API с предложением, чтобы получить значение из изображения, без необходимости сохранять изображение на сервере, только как буфер. но я пытаюсь и ничего

, когда я тестирую с URL 'https://tesseract.projectnaptha.com/img/eng_bw.png', работает нормально, но когда я пытаюсь использовать с буфером или локальным файлом, не работает

service:

import * as Tesseract from 'tesseract.js';

export const readImage = async (file: any): Promise<any> => {
  return new Promise((resolve, reject) => {
    console.log(file);
    Tesseract.recognize(
      file,
      'eng',
      { logger: m => console.log(m) },
    ).then((text) => {
      console.log(text);
      resolve(null);
    }).catch(err => reject(err));
  });
};

контроллер:

import {Request, Response} from "express";
import * as OcrService from './Ocr.service';

export const readImage = async (req: Request, res: Response) => {
    try {
        const encoded = req.file.buffer;
        const document = await OcrService.readImage(encoded);
        return res.status(200).send(document);
    } catch (e) {
        return res.status(400).send(e);
    }
};

config / multer:

import * as multer from 'multer';
import * as path from 'path';

const storage = multer.memoryStorage();
export const upload = multer({
  storage: storage,
  fileFilter: function(req, file, callback) {
    var ext = path.extname(file.originalname);
    if (ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') 
    {
      return callback(new Error('Only images are allowed'));
    }
    callback(null, true);
  },
  limits: {
    fileSize: 1024 * 1024,
  },
});

null POST / 200 1469,552 мс - 0

"мой текстовый пример"POST / 200 1469,552 мс - 0

...