#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 для получения точного вывода.