我有一个带有俄语文本的图像。我需要从该图像中识别文本
我正在使用一个魔方库。对于一些单词,它不能像预期的那样工作,所以我想清除图像,并使文本粗体和清晰的背景。对于魔方,我使用以下代码:
$ocr = new TesseractOCR(__DIR__ . self::CACHE_PATH . 'header_' . $filename);
$res_rus_header = $ocr->lang('rus')->run();
if (!empty($res_rus_header)) {
$res_rus_header = explode(PHP_EOL, $res_rus_header);
}
如何在tesseract之前清理图像?我创建了这篇文章:https://github.com/thiagoalessio/tesseract-ocr-for-php/issues/91#issuecomment-342290510
所以,我想尝试使用这些命令来创建映像:
$ convert -colorspace gray -modulate 120 -contrast-stretch 10%x80% -modulate 140 -gaussian-blur 1 -contrast-stretch 5%x50% +repage -negate -gaussian-blur 4 -negate -modulate 130 original.jpeg clean.jpeg
我怎样才能用Imagick库做到这一点?
像这样
$img = new Imagick(__DIR__ . self::CACHE_PATH . 'data_' . $filename);
$img->setImageFormat('jpg');
$img->setImageCompressionQuality(100);
$img->despeckleImage();
$img->brightnessContrastImage(0.4, 100);
$img->magnifyImage();
$kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
$img->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel);
$img->writeImage(__DIR__ . self::CACHE_PATH . 'fix_data_' . $filename);
谢谢
1条答案
按热度按时间pokxtpni1#
您的文本太小,字符靠得太近。
这里有一种方法是使用人工超级采样。那就是放大图像,用分割归一化处理,然后关闭形态学,然后缩小到原始大小。分割归一化部分会使图像变白,以清除一些在使用形态学时会出现在角色周围的jpg伪像。形态学会使角色变暗。