使用ImageMagick删除收据图像边框

在使用tesseract-OCR引擎提取文本之前,我正在使用ImageMagick服务预处理收据图像。 我需要删除收据的背景。 我已经通过掩蔽来移除这里的边界。 但是我无法为收据创建掩码。

但是,我试图从收据图像中删除阴影。

初始图像(示例收据)

在此处输入图像描述

convert input.png -colorspace gray \ \( +clone -blur 0x2 \) +swap -compose divide -composite \ -linear-stretch 5%x0% photocopy.png 

应用代码后:

在此处输入图像描述

我已经尝试了下面的代码来制作除了白色到黑色的所有颜色,但这似乎并没有完全遮蔽photocopy.png的背景。

 convert receipt.jpg -fill black -fuzz 20% +opaque "#ffffff" black_border.jpg 

在此处输入图像描述

有没有办法删除收据图像的边框? 或者从图像中创建任何类型的蒙版? 注意:我需要删除具有不同背景的多个图像的噪点和边框。

回答你的问题

“有没有办法删除收据图像的边框?或者从图像中创建任何类型的蒙版?

以下命令(基于您自己的代码)将创建一个图像,您可以使用该图像来获取适用蒙版的尺寸:

 convert \ origscan.jpg \ -colorspace gray \ \( +clone 0 -blur 0x2 \) \ +swap \ -compose divide \ -composite \ -linear-stretch 5%x0% \ -threshold 5% \ -trim \ mask-image.png 

您可以使用该掩码图像在一个命令中创建单色(黑色)掩码:

 convert \ origscan.jpg \ -colorspace gray \ \( +clone 0 -blur 0x2 \) \ +swap \ -compose divide \ -composite \ -linear-stretch 5%x0% \ -threshold 5% \ \( \ -clone 0 \ -fill '#000000' \ -colorize 100 \ \) \ -delete 0 \ black-mask.png 

以下是上述两个命令的结果,并排:

您可以使用identify来获取mask-image.png的几何体以及black-mask.png

 identify -format "%g\n" *mask*.png 2322x4128+366+144 2322x4128+366+144 

因此,图像canvas宽2322像素,高4128像素。 在我们的-trim操作之后,两个图像的可见部分当然都较小。 ( +366+144部分表示距原始图像左上角的水平/垂直偏移。)


补充评论:说完这一切:你应该真正考虑从收据中创建更好的照片! (如果您的相机可以创建4128像素高度的图像,这应该不是问题。如果您要处理的收据太多,那么获得一块可以制作的小平板玻璃可能是个好主意。放在纸上,以便在拍摄时将其弄直…)

如果在类Unix系统上使用ImageMagick,您可以尝试我的文本清理脚本。

 textcleaner -f 20 -o 10 -e normalize UhSV6.jpg result.jpg 

在此处输入图像描述

Interesting Posts