Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何识别扫描图像中的文本存在模式并对其进行裁剪? 扫描文档的智能裁剪_Image Processing_Imagemagick_Photoshop_Photoshop Cs4 - Fatal编程技术网

Image processing 如何识别扫描图像中的文本存在模式并对其进行裁剪? 扫描文档的智能裁剪

Image processing 如何识别扫描图像中的文本存在模式并对其进行裁剪? 扫描文档的智能裁剪,image-processing,imagemagick,photoshop,photoshop-cs4,Image Processing,Imagemagick,Photoshop,Photoshop Cs4,最近我接手了一个旧书/手稿的保存项目。它们数量巨大,几乎有10000页。我不得不用便携式扫描仪手动扫描它们,因为它们不适合用自动书籍扫描仪扫描 当我开始在Photoshop中编辑它们时,真正的问题就出现了。请注意,它们基本上都是文档(JPG格式),这些文档中绝对没有图像。他们使用不同的语言(Oriya),我相信在不久的将来不会有任何OCR软件可用。(如果有,请告诉我。) 为了使这些图像(文档)看起来干净优雅,我必须裁剪它们,定位它们,增加一点对比度,用橡皮擦清除不必要的斑点,等等。我能够在Pho

最近我接手了一个旧书/手稿的保存项目。它们数量巨大,几乎有10000页。我不得不用便携式扫描仪手动扫描它们,因为它们不适合用自动书籍扫描仪扫描

当我开始在Photoshop中编辑它们时,真正的问题就出现了。请注意,它们基本上都是文档(JPG格式),这些文档中绝对没有图像。他们使用不同的语言(Oriya),我相信在不久的将来不会有任何OCR软件可用。(如果有,请告诉我。)

为了使这些图像(文档)看起来干净优雅,我必须裁剪它们,定位它们,增加一点对比度,用橡皮擦清除不必要的斑点,等等。我能够在Photoshop中自动化这些过程中的大部分,但是裁剪是我陷入困境的地方。我无法自动裁剪,因为软件无法在img(doc)的某个区域识别文本或内容的存在;它只是将给定的值应用于裁剪

我想要一个解决方案来自动化这个裁剪过程。我已经想出了一个想法,我不知道它是否足够实用,以我所知,目前市场上还没有做这种事情的软件

可能的解决方案是:如果工具能够识别图像中的文本(这不是很关键,因为它们都是普通文档图像,没有图像,没有模式,只有普通矩形),那么这可能是可能的然后从每一面文本的边框处裁剪出来,这样它就可以输出一个文档图像而不留任何边距。在这之后,剩下的任务可以使用Photoshop自动完成,比如在页边空白处添加空白,调整对比度和颜色使其更具可读性等等

这里有一个指向图库的相册链接。如果有用的话,我可以发布更多的示例图片-请告诉我

以下是通过上述链接获得的更大图像样本中的一个示例:


从背景中分割文本的一种技术是笔划宽度变换。您可以在这里找到关于Stack Overflow的几篇文章,其中包括:

如果Wikipedia页面中显示的文本是书面Oriya的代表,那么我相信SWT(或您的自定义版本)将表现良好。在查看图像后,您可能仍然需要进行一些手动调整,但基于SWT的方法应该可以为您做很多工作

虽然SWT可能无法识别每一个笔划,但它应该可以很好地估计笔划(和字符)所占空间的大小。最简单的方法

一种可能适合您的新算法是“内容感知调整大小”算法,如“接缝雕刻”,它会自动删除低信息内容像素(例如背景像素)的路径。下面是一段关于接缝雕刻的视频:

GIMP有一个接缝雕刻插件(“液体大小调整”):

这篇博文报道了Photoshop的一个插件:

关于OCR技术的概述,我推荐Cheriet、Kharma、Liu和Suen的书《字符识别系统》。那本书中的参考资料会让你忙上一段时间


最后,考虑加入LinkedIn上的光学字符识别组来发布更具体的问题。业内有学者、研究人员和工程师可以非常详细地回答问题,您也可以通过电子邮件与正在为类似Oriya的语言开发OCR的印度研究人员联系,尽管他们可能尚未发布该软件。

使用tinypic的样本,

使用ImageMagick,我将按照以下思路构建一个算法:

  • 对比度拉伸原始图像

    黑点的1%和白点的10%的值似乎差不多

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 刮去一些边界像素,以去除那里的暗扫描伪影

    每条边上30个像素的值看起来差不多正确

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 对图像进行去斑点处理

    这里没有其他参数。重复过程3次以获得更好的结果

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 应用阈值使所有像素变为黑色或白色

    大约50%的值似乎是正确的

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 重新添加刮除的像素

    使用
    identify-格式“%Wx%H”21lppac.jpg
    确定原始图像的尺寸为
    1536x835
    像素

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果: (注意,这一步只是可选的。它的目的是回到原始图像的尺寸,如果你想从这里开始,将结果与原始图像叠加,或者其他任何东西……)

  • 反扭曲图像

    40%(默认值)的阈值在这里似乎也适用

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 从每个边缘删除纯白色像素的所有行和列

    这可以通过简单地使用
    -trim
    操作符来实现

    命令:

    convert                               \
       http://i46.tinypic.com/21lppac.jpg \
      -contrast-stretch 1%x10%            \
       contrast-stretched.jpg   
    
    convert                                                                         \
       trimmmed.jpg                                                                 \
      -distort perspective '0,0 0,0  1300,0 1300,0  0,720 0,720  1300,720 1300,770' \
       distort.jpg
    
    结果:

  • 如您所见,结果还不完美:

    • 在图像的底部边缘仍然存在一些随机的人工制品,并且

    • 由于其他极小的瑕疵,最终的修剪没有从边缘移除所有的空白

    • 还有,我还没有收到