PHP ImageMagick带文本的干净图像

pcww981p  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(150)

我有一个带有俄语文本的图像。我需要从该图像中识别文本

我正在使用一个魔方库。对于一些单词,它不能像预期的那样工作,所以我想清除图像,并使文本粗体和清晰的背景。对于魔方,我使用以下代码:

$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);

谢谢

pokxtpni

pokxtpni1#

您的文本太小,字符靠得太近。
这里有一种方法是使用人工超级采样。那就是放大图像,用分割归一化处理,然后关闭形态学,然后缩小到原始大小。分割归一化部分会使图像变白,以清除一些在使用形态学时会出现在角色周围的jpg伪像。形态学会使角色变暗。

convert text.jpg  \( +clone -blur 0x3 \) +swap -compose divide -composite -resize 1000% -morphology open diamond:1 -resize 10% x2.png

相关问题