【发布时间】:2018-10-08 15:09:36
【问题描述】:
我想在如下所示的文档扫描中获取包含任何文本的所有区域的坐标(降低质量;原始文件具有高分辨率):
我正在寻找类似于这些(GIMP'ed-up!)边界框的东西。对我来说,重要的是要承认这些段落。不过,如果两个大块(左页的顶部框,右页的中心块)各有两个边界框,那就没问题了:
获取这些边界框坐标的方式可能是通过某种 API(脚本语言优先于编译语言)或命令行命令,我不在乎。重要的是我自己得到坐标,而不仅仅是它们可见的图像的修改版本。这样做的原因是我需要计算它们每个的面积大小,然后在最大的中心切出一块。
我已经尝试过,到目前为止没有成功:
- ImageMagick - 它不适合这样的任务
- OpenCV - 学习曲线太高或者我的 google-foo 太差了
- Tesseract - 据我所知,它是一次性 OCR 软件,由于历史原因,它在尝试字符形状识别之前不进行页面布局分析
- OCRopus/OCRopy - 应该能够做到,但我不知道如何告诉它我对段落感兴趣,而不是单词或字符
- Kraken ibn OCRopus - OCRopus 的一个分支,边缘有些粗糙,仍在与之抗争
- 在图像二值化后使用统计数据,特别是聚类算法(OPTICS 似乎是最适合此任务的算法) - 我的数学和编码能力都不够
我看到互联网上的文档扫描图像被分割成包含文本、照片和其他元素的部分,所以这个问题似乎在学术上已经解决了。不过,如何获得好东西呢?
【问题讨论】:
-
我不明白这个问题。如果您指定
convert image -crop WxH+X+Y +repage result。然后你应该得到你指定的区域。任何外部边界都不重要。你是在裁剪一个非常大的区域。我认为你的问题是关于裁剪一个小区域以获得一些特定的词。请澄清。 -
问题不在于如何裁剪,而在于如何决定裁剪什么。我有数百个,每个都不一样。许多文本朝向图像的中心,但到目前为止还不是全部。那么如何找出适合种植的区域呢?
-
@fmw42,我的问题你还不清楚吗?我很想修改它,使它更容易理解,但我不确定它可能不清楚......
-
我没有很好的解决方案来避免任何大的边框效果,例如您显示的内容。如果您知道所需区域的大小,则可以创建一个比白色低 5% 灰度的模板,然后使用 Imagemagick 比较在较大的图像中找到最佳匹配。但是如果你不知道你想要的区域的大小,那么我目前没有一个好的解决方案。我会考虑的。
-
续:但我仍然不明白您是如何决定要提取哪段文本的。
标签: opencv neural-network statistics imagemagick-convert connected-components