- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Tesseract 进行 OCR,总体结果似乎可以接受。图像是非常非常长的收据,我们正在使用扫描仪扫描,质量更好。唯一的问题是收据中两行之间的字符很少
请参阅随附的示例图片。你可能会看到第一行中的字符 'p' 和第二行中的字符 M 是联合的。这会导致 OCR 出现问题。所以,真正的问题是我们可以在每个文本行之间添加一条白线或方 block 吗?
最佳答案
您可以在 Imagemagick 中为此图像执行此操作,方法是修剪图像以移除周围的白色并添加相同数量的黑色。然后将该图像平均到一列并寻找最亮的行。我从顶部和底部开始和停止 4 个像素,以避免在这些区域出现任何非常亮的行。找到最亮的行后,我在被该行划分的顶部和底部区域之间拼接 4 行白色。这不是最优雅的方式。但它显示了潜力。人们可能会将行值列表通过管道传输到 AWK,并以比保存到数组并使用 for 循环更有效的方式搜索最大值。带 Imagemagick 的 Unix 语法。
输入:
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
如果你想要更少的空间,你可以改成-splice 0x1+0+$row,但是不会有太大变化。它不会覆盖您的图像,而是在现有行之间插入白色。
但是通过上述处理,您的 OCR 仍然可能无法识别 p 或 M,因为 p 的底部被截断并附加到 M。
如果您有两行以上的文本,则必须在列中搜索近似均匀间隔的最大值。
关于opencv - 在文本行之间添加白线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48234316/
我使用 JavaScript 在 html 5 Canvas 上显示一个数组。该程序对数组中的每个值使用 c.fillRect()。一切看起来都很正常,直到我使用 c.scale() 缩放它。缩放后,
您好! 我正在运行一个博客,使用我自己定制的主题,但我在其中的某些页面上遇到了一个奇怪的问题。主页看起来不受影响,常规页面也不受影响。但是,类别页面会受到此问题的影响。 我的博客在这里:http://
我有一张带有背景图片的图片,将鼠标悬停在它上面会使用 CSS 2D 变换进行缩放和旋转。一切正常,除了 1px 的白色间隙线,看起来很糟糕。这不仅发生在 Chrome 中,而且几乎所有浏览器都会发生。
我有两个 View ,一个叠在另一个上面。 模拟器中的屏幕截图: 我在手机上看到的: 从屏幕上可以看出,模拟器版本很好,但我的手机上有一条两个 View 之间的白线。代码如下: import Reac
我是一名优秀的程序员,十分优秀!