gpt4 book ai didi

opencv - 在文本行之间添加白线

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:23 24 4
gpt4 key购买 nike

我正在尝试使用 Tesseract 进行 OCR,总体结果似乎可以接受。图像是非常非常长的收据,我们正在使用扫描仪扫描,质量更好。唯一的问题是收据中两行之间的字符很少

Sample Image

请参阅随附的示例图片。你可能会看到第一行中的字符 'p' 和第二行中的字符 M 是联合的。这会导致 OCR 出现问题。所以,真正的问题是我们可以在每个文本行之间添加一条白线或方 block 吗?

最佳答案

您可以在 Imagemagick 中为此图像执行此操作,方法是修剪图像以移除周围的白色并添加相同数量的黑色。然后将该图像平均到一列并寻找最亮的行。我从顶部和底部开始和停止 4 个像素,以避免在这些区域出现任何非常亮的行。找到最亮的行后,我在被该行划分的顶部和底部区域之间拼接 4 行白色。这不是最优雅的方式。但它显示了潜力。人们可能会将行值列表通过管道传输到 AWK,并以比保存到数组并使用 for 循环更有效的方式搜索最大值。带 Imagemagick 的 Unix 语法。

输入:

enter image description here

max=0
row=0
arr=()
arr=(`convert text.png -fuzz 50% -trim -background black -flatten -colorspace gray -scale 1x! -depth 8 txt:- | tail -n +2 | sed -n 's/^.*gray[(]\(.*\)[)]$/\1/p'`)
num=${#arr[*]}
#echo "${arr[*]}"
for ((i=4; i<num-4; i++)); do
val="${arr[$i]}"
max=`convert xc: -format "%[fx:$val>$max?$val:$max]" info:`
row=`convert xc: -format "%[fx:$val==$max?$i:$row]" info:`
#echo "$i $val $max $row"
done
convert text.png -gravity north -splice 0x4+0+$row text2.png

enter image description here

如果你想要更少的空间,你可以改成-splice 0x1+0+$row,但是不会有太大变化。它不会覆盖您的图像,而是在现有行之间插入白色。

但是通过上述处理,您的 OCR 仍然可能无法识别 p 或 M,因为 p 的底部被截断并附加到 M。

如果您有两行以上的文本,则必须在列中搜索近似均匀间隔的最大值。

关于opencv - 在文本行之间添加白线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48234316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com