以编程方式将扫描图像分割为单独的图像

2023-12-24

为了提高 OCR 质量,我需要对扫描图像进行预处理。有时我需要对带有少量图片的图像进行OCR(页面上的组件并且它们处于不同的角度 - 例如,一次扫描一些纸质文档),例如:

是否有可能以编程方式自动将此类图像划分为包含每个逻辑文档的单独图像?例如使用 ImageMagick 等工具或其他工具?对于这样的问题有什么解决方案/技术吗?


在 ImageMagick 6 中,您可以对图像进行足够模糊,以使文本重叠并设置阈值,以便每个文本框都是白色背景上的一个大黑色区域。然后,您可以使用连接组件来查找每个单独的黑灰色(0)区域及其边界框。然后使用边界框值裁剪每个此类区域的原始图像。

Input:

Unix 语法(将模糊调整到足够大以保持文本区域纯黑色):

infile="image.png"
inname=`convert -ping $infile -format "%t" info:`
OLDIFS=$IFS
IFS=$'\n'
arr=(`convert $infile -blur 0x5 -auto-level -threshold 99% -type bilevel +write tmp.png \
-define connected-components:verbose=true \
-connected-components 8 \
null: | tail -n +2 | sed 's/^[ ]*//'`)
num=${#arr[*]}
IFS=$OLDIFS
for ((i=0; i<num; i++)); do
#echo "${arr[$i]}"
color=`echo ${arr[$i]} | cut -d\  -f5`
bbox=`echo ${arr[$i]} | cut -d\  -f2`
echo "color=$color; bbox=$bbox"
if [ "$color" = "gray(0)" ]; then
convert $infile -crop $bbox +repage -fuzz 10% -trim +repage ${inname}_$i.png
fi
done


文字列表:

color=gray(255); bbox=892x1008+0+0
color=gray(0); bbox=337x430+36+13
color=gray(0); bbox=430x337+266+630
color=gray(0); bbox=202x147+506+252

tmp.png 显示模糊和阈值区域:

裁剪图像:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式将扫描图像分割为单独的图像 的相关文章

  • 运行时错误:大小不匹配,m1:[4 x 3136],m2:[64 x 5]位于c:\ a \ w \ 1 \ s \ tmp_conda_3.7_1

    我使用 python 3 当我插入变换随机裁剪大小 224 时 它会给出未匹配错误 这是我的代码 https github com kajasumanie medical plant classification blob master i
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 无法在 PIL 中对 16 位 TIF 应用图像滤镜

    我尝试使用 python 应用图像过滤器PIL http www pythonware com products pil 代码很简单 im Image open fnImage im im filter ImageFilter BLUR 此
  • 在 .NET 中旋转 JPEG,质量损失最小

    我正在尝试支持从 ASP NET MVC 旋转 JPEG 图像 以 90 度增量 我正在尝试使用System Drawing GDI 但是我遇到了问题 我尝试使用Image RotateFlip http msdn microsoft co
  • PHP Imagick - setTextEncoding() 函数不起作用

    我正在尝试在 Imagick 对象上添加一些文本 但是我使用 setTextEncoding 函数 它仍然不起作用 draw new ImagickDraw draw gt setTextEncoding utf 8 draw gt set
  • ECC 导致多光谱图像的图像对齐失败

    我正在尝试将 RGB 图像与 IR 图像 单通道 对齐 目标是创建 4 通道图像 R G B IR 为了做到这一点 我正在使用cv2 findTransformECC如中所述这个非常简洁的指南 https learnopencv com i
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 使用 Tesseract 进行手写识别

    我只是想知道 如果将大写字母全部放在表格中自己的小框中 那么超正方体的手写识别准确度有多高 我知道你可以训练它来识别你自己的笔迹 但我的问题是我需要在多个笔迹中使用它 有人能指出我正确的方向吗 多谢 简而言之 您必须训练 Tesseract
  • 在 python lib 中导入和裁剪 jpeg 的快速方法

    我有一个 python 应用程序 可以导入 200k 图像 裁剪它们 并将裁剪后的图像呈现给 pyzbar 来解释条形码 裁剪很有帮助 因为图像上有多个条形码 并且当给定较小的图像时 pyzbar 可能会更快一些 目前我正在使用 Pillo
  • 如何获得垂直线穿过的完整内轴线?

    我有一个图像 我想获取穿过其中轴的像素 我尝试使用骨架化 and 中轴方法来获取它们 但这两种方法都返回比相应对象短的一维线 这是带有示例图像的代码 gt gt gt import skimage filter gt gt gt impor
  • 剪切透明零件图像

    The updated image 非常感谢你 但我想做一些不同的事情 将这里的每个矩形剪切为单独的图像 让我们首先尝试找到蓝色块边界 听起来很难 但实际上很简单 看看我到目前为止所做的事情 private unsafe Bitmap Co
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • 如何使用 imagemagick 创建像shutterstock一样的水印

    我想创建像 Shutterstock 一样的图像水印 我已经尝试过但无法复制它 我尝试使用以下命令 对我来说 问题是我无法像 Shutterstock 那样向图像添加对角线随机文本 我尝试了很多选择但没有运气 infile zoom jpg
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • 减少非常大图像的文件大小,而不改变图像尺寸

    考虑一个处理可能非常大的 PNG 文件上传的应用程序 所有上传的文件必须存储到磁盘以供以后检索 但是 PNG 文件的大小最大可达 30 MB 但磁盘存储限制规定每个文件的最大大小为 1 MB 问题是获取文件大小高达 30 MB 的输入 PN
  • gem install rmagick 在 OS X El Capitan 上失败

    几天前我升级到 El Capitan 并运行了 brew update brew upgrade 它更新了 imagemagick 导致 ruby 的 rmagick gem 停止工作 我想没问题 我就跑 gem install rmagi
  • 从图像创建 PDF 时设置文档名称

    我使用以下代码从 jpg 图像创建 pdf im new Imagick im gt readImage image jpg im gt setImageFormat pdf im gt writeImage images pdf imag
  • 使用 PIL 用附近的颜色填充空白图像空间(也称为修复)

    我用 PIL 创建一个图像 我需要填充空白区域 显示为黑色 我可以轻松地用静态颜色填充它 但我想做的是用附近的颜色填充像素 例如 边框之后的第一个像素可能是填充像素的高斯模糊 或者可能是中描述的推拉型算法Lumigraph Gortler
  • 如何识别与我的对象相关的轮廓并找到它们的几何质心

    问题陈述和背景信息 EDIT 约束 法兰上的红色会随着时间的推移而变化 所以我此时不会尝试使用颜色识别来识别我的对象 除非它足够强大 此外 外部照明也可能是一个因素 因为将来这将是在室外区域 我有 RGB 深度相机 有了它 我就能捕捉到这个
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any

随机推荐

  • 在 DirectX 中显示视频

    在使用 XAudio2 和 Direct3D9 10 的应用程序中显示视频 带声音 的最佳 最简单方法是什么 至少它需要能够传输可能更大的视频 并考虑到窗口宽高比可能与视频不同的事实 例如通过添加信箱 尽管理想情况下我希望能够将视频嵌入到3
  • Macroable.php 第 74 行中的 BadMethodCallException:方法控制器不存在

    当我遵循路线控制器时 我遇到了一些问题 Web php代码 Route controller admin adminController adminController php代码
  • VS Code Python 等待调试器连接超时

    昨天 在 Visual Studio Code 自我更新 从 1 27 2 到 1 28 2 之前 我可以在激活特定环境并调试脚本后从 anaconda 提示符中打开它 现在 当我尝试调试脚本时 收到有关等待调试器连接超时的错误 我遵循了另
  • 如何使 DIV 部分可点击?

    我编写了一个网页 其中的链接都包含在它们自己的标签中 我还使用 CSS 边框 背景颜色 填充 将它们设置为所有按钮样式 如何让整个 DIV 被点击来激活链接 实现这种效果 使链接像按钮一样 的最佳方法是将 css 应用到链接本身 这是一个基
  • 回收位图异常

    我收到这个异常 异常 java lang IllegalStateException 无法复制回收的位图 我的代码是 int width bitmap getWidth int height bitmap getHeight int new
  • 如何在子测试中访问 Jest 测试环境的类属性?

    我已经为jest创建了一个测试环境 它非常接近于他们的官方文档 https jestjs io docs en configuration testenvironment string 我在构造函数中设置了一些值 我希望将它们提供给环境中使
  • Android 跳过 WebView 焦点并使用 TalkBack 直接进入内容

    我的 Android 应用程序中有一个 WebView 但启用 TalkBack 后 它会聚焦于整个视图 用户必须滑动到下一个项目才能开始听到 WebView 内容 有没有办法跳过WebView的选择并直接跳到选择内容 在尝试之后我不这么认
  • 基于控制器操作的 Rails 条件(“if”)语句

    可能有更好的方法来做到这一点 但我试图在控制器中基于当前操作在 Rails 中创建一个 if 语句 这将在视图中使用 例如 如果它是编辑页面或显示页面等 我想要不同的样式 是否有 if 语句可以指定这一点 我需要一个 if 语句 因为它在多
  • Liquibase + Postgresql + Spring Jpa:Id 自动递增问题

    我在实体中有以下描述 Id GeneratedValue strategy GenerationType IDENTITY private Long id 用于生成此 id 的 Liquibase 指令如下
  • 通过 Flask 将串行数据传递给 javascript

    我一直在研究将数据从 Flask 推送到 Javascript 主要是通过修改此处找到的代码 https github com clebio flask d3 https github com clebio flask d3 现在我尝试从
  • Android 中的 ViewPager 滚动问题

    我有一个ViewPager动态数量images在里面 这ViewPager作为自定义行添加到表视图中 由于此表视图可以有多个动态自定义行 因此我必须在scrollview用于滚动 现在我的问题是 当我水平滚动到 查看寻呼机 时 它并不完全是
  • 根据商品数量有条件地按购物车商品添加折扣

    我已经建立了一个 Woocommerce 商店 并希望为所有产品设置基于 12 倍数 一盒 的特定折扣 我尝试了很多折扣插件 但没有找到我想要的 例如 如果我订购 12 件产品 X 我将获得 10 的折扣 如果我订购 15 件产品 X 前
  • 无法在 Mac OS 中使用 Python select.poll?

    python Python 2 7 5 default Aug 25 2013 00 04 04 GCC 4 2 1 Compatible Apple LLVM 5 0 clang 500 0 68 on darwin Type help
  • JavaScript 中的递归函数调用

    我知道在 JavaScript 中对函数进行递归调用时应该小心谨慎 因为第二次调用可能会慢 10 倍 雄辩的 JavaScript http eloquentjavascript net chapter3 html states 有一个重要
  • React 组件中的 render() 函数的作用是什么? [复制]

    这个问题在这里已经有答案了 我是 ReactJS 的新手 对组件类中渲染函数的使用以及 ReactDOM 全局对象的使用感到困惑 对此的回答question https stackoverflow com questions 3346567
  • fgetcsv 无法读取 mac 格式的 csv 文件中的行结尾,有更好的解决方案吗?

    我正在使用 php 和 fgetcsv 函数解析 csv 文件 它解析了一行中的所有内容 后来我发现 csv包含回车符 r 我看到 之前被报告为 php bug 我通过设置 php 运行时配置解决了这个问题 ini set auto det
  • Rcpp/RcppArmadillo:根据位置从向量中删除非连续元素

    假设我有一个向量 2 4 6 8 10 我需要删除第二个and该向量的第四个元素 所需的结果向量应为 2 6 10 这在 R 中很容易实现 v1 lt c 2 4 6 8 10 v1 c 2 4 但是我如何在 Rcpp RcppArmadi
  • LLBLGen:如何软删除条目

    我继承了一个使用 LLBLGen Pro 作为 DB 层的项目 DB 模型要求在删除条目时有一个标志 DeletedDate 设置为当前时间 最后一位程序员忽略了这一要求 并在整个应用程序中使用了常规删除 有没有办法将代码生成器设置为自动执
  • JavaScript - 保持尾随零[重复]

    这个问题在这里已经有答案了 我想解析一个字符串 我使用了parseFloat 但它会删除所有尾随零 如何防止这种情况 我需要准确地解析字符串 如果我有 2 5000 我需要与浮点数完全相同的结果 2 5000 你可以做 parseFloat
  • 以编程方式将扫描图像分割为单独的图像

    为了提高 OCR 质量 我需要对扫描图像进行预处理 有时我需要对带有少量图片的图像进行OCR 页面上的组件并且它们处于不同的角度 例如 一次扫描一些纸质文档 例如 是否有可能以编程方式自动将此类图像划分为包含每个逻辑文档的单独图像 例如使用