Google Vision |Вьетнамцы: низкое качество результатов распознавания текста - PullRequest
0 голосов
/ 09 ноября 2019

Фон

Использование API Google Vision (с Node) для распознавания вьетнамского текста приводит к ухудшению качества. Некоторые (не все, но некоторые) тональные маркеры, а также гласные означают отсутствие.

По сравнению с их онлайн-демонстрацией, которая возвращает достойный результат (прокрутите вниз для демонстрации в реальном времени):

https://cloud.google.com/vision/

(так как у меня нет с ними корпоративного аккаунта, я не могу напрямую обратиться в Google.)

Вопрос

Могу ли я настроить свойзапросить получение лучших результатов?

Я уже установил подсказку языка на "vi" и попытался объединить ее с "en". Я также попробовал более конкретный «vi-VN».

Пример изображения

https://www.tecc.org/Slatwall/custom/assets/images/product/default/cache/j056vt-_800w_800h_sb.jpg

Пример кода

const fs = require("fs");
const path = require("path");
const vision = require("@google-cloud/vision");

async function quickstart() {
  let text;
  const fileName = "j056vt-_800w_800h_sb.jpg";
  const imageFile = fs.readFileSync(fileName);
  const image = Buffer.from(imageFile).toString("base64");
  const client = new vision.ImageAnnotatorClient();

  const request = {
    image: {
      content: image
    },
    imageContext: {
      languageHints: ["vi", 'en']
    }
  };

  const [result] = await client.textDetection(request);

  for (const tmp of result.textAnnotations) {
    text += tmp.description + '\n';
  }

  const out = path.basename(fileName, path.extname(fileName)) + ".txt";
  fs.writeFileSync(out, text);
}

quickstart();

Решение

// $env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

const fs = require("fs");
const path = require("path");
const vision = require("@google-cloud/vision");

async function quickstart() {
  let text = '';
  const fileName = "j056vt-_800w_800h_sb.jpg";
  const imageFile = fs.readFileSync(fileName);
  const image = Buffer.from(imageFile).toString("base64");
  const client = new vision.ImageAnnotatorClient();

  const request = {
    image: {
      content: image
    },
    imageContext: {
      languageHints: ["vi-VN"]
    }
  };

  const [result] = await client.documentTextDetection(request);

  // OUTPUT METHOD A

  for (const tmp of result.textAnnotations) {
      text += tmp.description + "\n";
  }

  console.log(text);

  const out = path.basename(fileName, path.extname(fileName)) + ".txt";
  fs.writeFileSync(out, text);

  // OUTPUT METHOD B

  const fullTextAnnotation = result.fullTextAnnotation;
  console.log(`Full text: ${fullTextAnnotation.text}`);
  fullTextAnnotation.pages.forEach(page => {
    page.blocks.forEach(block => {
      console.log(`Block confidence: ${block.confidence}`);
      block.paragraphs.forEach(paragraph => {
        console.log(`Paragraph confidence: ${paragraph.confidence}`);
        paragraph.words.forEach(word => {
          const wordText = word.symbols.map(s => s.text).join("");
          console.log(`Word text: ${wordText}`);
          console.log(`Word confidence: ${word.confidence}`);
          word.symbols.forEach(symbol => {
            console.log(`Symbol text: ${symbol.text}`);
            console.log(`Symbol confidence: ${symbol.confidence}`);
          });
        });
      });
    });
  });

}

quickstart();

1 Ответ

0 голосов
/ 13 ноября 2019

На этот вопрос уже дан ответ в этом .

Таким образом, демо-версия в этом случае, вероятно, использует DOCUMENT_TEXT_DETECTION, которая иногда может сделать более тщательное извлечение строк, пока выиспользуют TEXT_DETECTION.

Вы можете попытаться сделать запрос client.document_text_detection вместо client.textDetection, и вы, вероятно, получите результаты ближе к демонстрации.

Если вы хотите прочитать соответствующую статьюдокументацию вы можете найти здесь .

Надеюсь, это решит ваш вопрос!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...