Не удается получить эффективный результат от Tesseract OCR при создании newocr

#android #opencv #ocr #tesseract #text-recognition

#Android #opencv #распознавание #tesseract #распознавание текста

Вопрос:

Я работаю над приложением, в котором мне нужно идентифицировать текст по изображению, и что может быть лучшим способом, чем использование Tesseract. Поскольку Tesseract является открытым исходным кодом и широко распространен. Я использовал Tesseract в своем приложении. Итак, я получаю изображения от пользователя, а затем применяю 2-3 операции к изображению, чтобы повысить шансы на получение результата, но я не получаю ожидаемого результата.

Java-код ->

     final Bitmap tessBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(tessBitmap);
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    canvas.drawBitmap(image, 0, 0, paint);

    Mat tessMat = new Mat();

    Utils.bitmapToMat(tessBitmap, tessMat);

    Imgproc.cvtColor(tessMat, tessMat, Imgproc.COLOR_RGB2GRAY);

    Imgproc.threshold(tessMat, tessMat, 0, 255, Imgproc.THRESH_BINARY   Imgproc.THRESH_OTSU);

    final Bitmap newTessBitmap = Bitmap.createBitmap(tessMat.width(), tessMat.height(), Bitmap.Config.RGB_565);

    Utils.matToBitmap(tessMat, newTessBitmap);

    final Bitmap finalTessBitmap = Bitmap.createBitmap(newTessBitmap.getWidth(), newTessBitmap.getHeight(), Bitmap.Config.ARGB_8888);

    Canvas tessCanvas = new Canvas(finalTessBitmap);
    Paint tessPaint = new Paint();
    tessPaint.setColor(Color.BLACK);
    tessCanvas.drawBitmap(newTessBitmap, 0, 0, tessPaint);
  

и затем передаю это растровое изображение в tesseract для получения выходных данных, но не получается эффективно, а иногда я даже ничего не получаю на выходе. Я сравнил свой результат с одним онлайн-сайтом https://www.newocr.com / .

Который также использует tesseract в серверной части, как он утверждает. я также пытался связаться с ними по электронной почте, но ничего не смог от них получить.

 mTess = new TessBaseAPI();
tessModelPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()   "/tesseract/";
mTess.init(tessModelPath, "eng", TessBaseAPI.OEM_TESSERACT_ONLY);                                 mTess.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO);
mTess.setImage(finalTessBitmap);
  

Это базовый код Tesseract. Пожалуйста, помогите мне решить мою проблему. Спасибо…

Ниже приведено изображение, которое я получаю после применения вышеупомянутой операции, но когда я передаю его в tesseract, я ничего не получаю, но при передаче в newocr.com веб-сайт выдает точный текст.

Изображение

Результат от newOcr.

Это изображение предназначено для результатов.

Проверьте результаты на этом изображении.

Пожалуйста, подскажите мне, что делать, если у вас есть какие-либо идеи.

После дальнейшего изучения и запуска того же изображения в коде python я обнаружил, что в python pytesseract это работает как шарм и выдает точный вывод как newocr. Но когда я запускаю на Android, это работает не так хорошо. возможно, проблема связана с API Tesseract. Итак, теперь, если вы знаете что-нибудь еще, что я могу сделать для повышения точности. Помогите мне. Заранее спасибо.

Комментарии:

1. Спасибо за ваш ответ @JimGrigoryan я также был удивлен их результатами, и именно поэтому я отправил им по почте информацию о том, какую обработку изображений они выполняют? но ничего не удалось получить. И я знаю, что есть доступный api, но я хочу реализовать это в автономном режиме. итак, я просто хочу знать, как я могу улучшить результаты. Спасибо.

Ответ №1:

 $ tesseract 8UIBw.jpg -
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 613
Tillamook
  

Это было без какой-либо предварительной обработки…

 $ tesseract -v
tesseract 4.0.0-253-g3948
 leptonica-1.76.0 (Dec 14 2018, 15:34:47) [MSC v.1916 LIB Release x64]
  libgif 5.1.4 : libjpeg 9b : libpng 1.6.35 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
 Found AVX
 Found SSE
  

Комментарии:

1. Не могли бы вы, пожалуйста, уточнить свой ответ, поскольку я не мог понять, что вы пытаетесь сказать? @user898678

2. Это была реакция на «Пожалуйста, подскажите мне, что делать, если у вас есть какие-либо идеи». и «Я сомневаюсь, что newocr использует Tesseract, как они утверждают». — tesseract версии 4 обрабатывает это без какой-либо предварительной обработки.

3. Я также наблюдал то же самое, когда пытался запустить на python. Теперь мне нужно что-то, что может либо оптимизировать библиотеку, либо некоторую обработку изображений, которая потребуется для Tess-Two для получения точного вывода.