#c# #google-cloud-vision
# #c# #google-cloud-vision
Вопрос:
Распознавание шестнадцатеричных чисел Google Vision OCR распознает шестнадцатеричные числа с ошибками очень часто (точность составляет около 60%). Например, когда я пытаюсь распознать отсканированное изображение с помощью muber «78 30 3D 61», Google OCR распознает его с текстом типа «78 30 30 61». Для распознавания OCR я использовал живую демонстрацию и клиент .NET Api с тем же неверным результатом.
Вот мой код на C #:
var image = await Google.Cloud.Vision.V1.Image.FromFileAsync("c:\path\to\file.png");
var imageContext = new ImageContext();
imageContext.LanguageHints.Add("en");
imageContext.LanguageHints.Add("iw");
var recognizedText = await imageAnnotatorClientBuilder.DetectDocumentTextAsync(image, imageContext);
Обработка изображения, которую я пробовал, безрезультатно:
- Пороговое значение изображения с различными уровнями
- Инвертирование цвета для изображения
- Игра с контрастностью / яркостью / четкостью
Есть ли какая-либо возможность изучить Google vision или указать, что изображение содержит шестнадцатеричные числа (например, ImageContext, но для шестнадцатеричных чисел)?
Кроме того, я выложил на Google Диск пример изображения с ошибками распознавания, чтобы вы могли попробовать его и в живой демонстрации Google.
Ответ №1:
На предоставленном изображении единственные шестнадцатеричные цифры, которые я вижу, — это те, которые помечены как блок 6 в Cloud Vision API [1]. Шестнадцатеричная система использует 16 символов (0-9, A-F), что может привести к неправильной маркировке символов Af, когда они окружены цифровыми символами. Возможное объяснение неправильной маркировки Vision API заключается в том, что он, вероятно, использует сверточные нейронные сети и учитывает контекст. Как это происходит в этом случае, ‘D’ может быть распознан как ‘0’, потому что он окружен цифрами, а Vision API не ожидает, что это будет буква.
Vision API использует уже обученные модели, и их нельзя изменить. В случае, если вас интересует только шестнадцатеричное число, о котором я упоминал выше, я бы посоветовал вам обрезать изображение и поискать модель, специально предназначенную для распознавания шестнадцатеричных чисел.
AutoML [2] позволяет обучать пользовательские модели машинного обучения. Взгляните на раздел sight, чтобы ознакомиться с документацией AutoML Vision [3]. Используя этот сервис, вы сможете обучать конкретные модели, соответствующие вашим требованиям.
[1] — https://cloud.google.com/vision/docs/drag-and-drop
[2] — https://cloud.google.com/automl
[3] — https://cloud.google.com/vision/overview/docs#automl-vision