Я работаю над приложением, в котором мне нужно идентифицировать текст на изображении, и что может быть лучше, чем использование 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/.
Который также использует тессеракт в бэк-энде, как утверждает. Я также пытался связаться с ними по электронной почте, но ничего не могу от них получить.
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);
Это базовый код Тессеракта. Пожалуйста, помогите мне решить мою проблему. Спасибо ...
Ниже приведено изображение, которое я получаю после применения вышеупомянутой операции, но когда я передаю его тессеракту, я ничего не получаю, но при переходе на сайт newocr.com выдает точный текст.
Результат от newOcr.
Это изображение для результатов.
Пожалуйста, предложите мне, что делать, если у вас есть идеи.
После того, как копать больше и запускать одно и то же изображение в коде python, я обнаружил, что в pytesseract в python он работает как charm и производит точный вывод newocr. Но когда я бегу в Android, это не работает так хорошо. так может быть проблема с API Тессеракта. Итак, теперь, если вы знаете что-нибудь еще, что я могу сделать, чтобы улучшить точность. Помоги мне. Заранее спасибо.