0

我想看看是否有人知道我可以上传图像的浏览器(甚至可能是 Java)工具,它会努力找到不同的字符并将它们裁剪成单独的图像。

例如,在这张图片中,我希望该工具能够找到三个独特的符文符号并将它们保存到单独的文件中。这不是真正的 OCR,因为我们没有解释字符是什么,我们只需要认识到它们之间有一点空白,所以让我们把它保存起来。

在此处输入图像描述

我公司有“你是程序员,应该能做到吧?” 态度,我需要提供解决方案或替代要求。我知道有很多工具可以让用户手动裁剪,但他们专门寻找一种自动工具来减少用户活动量。

如果有可用的(最好是 Java)服务器端工具,我肯定也会对此持开放态度。

任何 jQuery、Vue 甚至 Java 等的建议都将不胜感激。

更新: Imagemagick 的工作基于下面@fmw42 的响应,但我们发现了另一个名为 Marvin 图像处理框架的工具,它正在做我们需要的事情,它是本机 Java。

http://marvinproject.sourceforge.net/en/index.html

4

2 回答 2

1

在 ImageMagick 中,有一个连接组件工具,它可以用一点 unix 脚本来做你想做的事情。它仅在字符之间存在白色分隔时才有效。我相信 OpenCV 也有类似的东西。

输入:

在此处输入图像描述

让我们从连接组件开始,以显示返回的文本数据:

convert rUNOP.png -alpha off -threshold 50% -type bilevel \
-define connected-components:verbose=true \
-connected-components 4 null: | sed 's/^[ ]*//'

Objects (id: bounding-box centroid area mean-color):
0: 236x139+0+0 118.2,71.3 30849 gray(255)
2: 36x50+27+11 39.7,30.5 630 gray(0)
3: 29x50+90+11 103.3,34.3 580 gray(0)
1: 23x50+155+9 163.3,33.3 502 gray(0)
4: 13x24+160+21 165.0,32.9 243 gray(255)

现在将它与一些脚本结合起来,找到那些黑色的条目,即灰色(0)颜色并提取边界框并使用它来裁剪输入图像。

OLDIFS=$IFS
IFS=$'\n'
arr=(`convert rUNOP.png -alpha off -threshold 50% -type bilevel \
-define connected-components:verbose=true \
-connected-components 4 null: | sed 's/^[ ]*//'`)
num=${#arr[*]}
IFS=$OLDIFS
for ((i=0; i<num; i++)); do
bbox=`echo ${arr[$i]} | cut -d\  -f2`
color=`echo ${arr[$i]} | cut -d\  -f5`
if [ "$color" = "gray(0)" ]; then
convert rUNOP.png -crop $bbox +repage rUNOP_crop_$i.gif
fi
done

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2018-03-13T18:31:08.837 回答
0

据我所知,没有任何图书馆可以为您进行裁剪。解决这个问题的一种方法是使用 imagemagick 来裁剪图像,但你必须弄清楚在哪里裁剪。

https://www.imagemagick.org/script/api.php

祝你好运 :)

于 2018-03-13T15:04:48.400 回答