Я написал приложение, которое сегментирует изображение на основе текстовых областей внутри него и извлекает эти области по своему усмотрению. То, что я пытаюсь сделать, - это очистить изображение, чтобы OCR (Tesseract) дал точный результат. В качестве примера у меня есть следующее изображение:
Выполнение этого через tesseract дает очень неточный результат. Однако очистка изображения (с помощью фотошопа), чтобы получить изображение следующим образом:
Дает точно результат, которого я ожидал бы. Первое изображение уже выполняется следующим способом, чтобы очистить его до этой точки:
public Mat cleanImage (Mat srcImage) {
Core.normalize(srcImage, srcImage, 0, 255, Core.NORM_MINMAX);
Imgproc.threshold(srcImage, srcImage, 0, 255, Imgproc.THRESH_OTSU);
Imgproc.erode(srcImage, srcImage, new Mat());
Imgproc.dilate(srcImage, srcImage, new Mat(), new Point(0, 0), 9);
return srcImage;
}
Что еще можно сделать, чтобы очистить первое изображение, чтобы оно было похоже на второе изображение?
Изменить: это исходное изображение перед запуском функции cleanImage
.