文档图像处理

2023-11-25

我正在开发一个用于处理文档图像(主要是发票)的应用程序,基本上,我想将某些感兴趣的区域转换为 XML 结构,然后根据该数据对文档进行分类。目前我正在使用 ImageJ 来分析文档图像,并使用 Asprise/tesseract 来进行 OCR。

现在我正在寻找一些能让开发变得更容易的东西。具体来说,我正在寻找一些东西来自动校正文档图像并分析文档结构(例如,将图像转换为四叉树结构以便于处理)。虽然我更喜欢 Java 和 ImageJ,但我对任何库/代码/论文都感兴趣,无论它是用什么编程语言编写的。

虽然我正在开发的系统应尽可能自动处理数据,但用户应监督结果,并在必要时更正系统建议的分类。因此,我有兴趣使用机器学习技术来获得更可靠的结果。当处理类似的文档时,例如特定公司的发票,其结构通常是相同的。当用户之前更正过公司文档的数据时,应在将来考虑这些更正。我对机器学习技术的了解有限,想知道如何实现我的想法。


Mathematica 中的以下原型查找文本块的坐标并在每个块内执行 OCR。您可能需要调整参数值以适合实际图像的尺寸。我不讨论问题的机器学习部分;也许您甚至不需要此应用程序。

导入图片,为打印部分创建二进制蒙版,并使用水平闭合(膨胀和腐蚀)放大这些部分。

enter image description here

查询每个斑点的方向,对方向进行聚类,并通过对最大聚类的方向进行平均来确定整体旋转。

enter image description here

使用之前的角度来拉直图像。此时 OCR 是可能的,但您会丢失文本块的空间信息,这将使后处理比需要的困难得多。相反,通过水平闭合来查找文本块。

enter image description here

对于每个连接的组件,查询边界框位置和质心位置。使用边界框位置提取相应的图像块并对块执行 OCR。

enter image description here

此时,您已经有了字符串及其空间位置的列表。这还不是 XML,但听起来像是一个很好的起点,可以直接根据您的需求进行定制。

这是代码。同样,形态函数的参数(结构元素)可能需要根据实际图像的比例进行更改;此外,如果发票太倾斜,您可能需要大致“旋转”结构元素,以便仍然实现良好的“不倾斜”。

img = ColorConvert[Import@"http://www.team-bhp.com/forum/attachments/test-drives-initial-ownership-reports/490952d1296308008-laura-tsi-initial-ownership-experience-img023.jpg", "Grayscale"];
b = ColorNegate@Binarize[img];
mask = Closing[b, BoxMatrix[{2, 20}]]
orientations = ComponentMeasurements[mask, "Orientation"];
angles = FindClusters@orientations[[All, 2]]
\[Theta] = Mean[angles[[1]]]
straight = ColorNegate@Binarize[ImageRotate[img, \[Pi] - \[Theta], Background -> 1]]
TextRecognize[straight]
boxes = Closing[straight, BoxMatrix[{1, 20}]]
comp = MorphologicalComponents[boxes];
measurements = ComponentMeasurements[{comp, straight}, {"BoundingBox", "Centroid"}];
texts = TextRecognize@ImageTrim[straight, #] & /@ measurements[[All, 2, 1]];
Cases[Thread[measurements[[All, 2, 2]] -> texts], (_ -> t_) /; StringLength[t] > 0] // TableForm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文档图像处理 的相关文章

  • 单词预测算法

    我确信有一篇关于此问题的帖子 但我找不到提出这个确切问题的帖子 考虑以下 我们有字典可供使用 我们收到了许多单词段落 我希望能够根据此输入预测句子中的下一个单词 假设我们有几个句子 例如 你好 我的名字是汤姆 他的名字是杰瑞 他去了没有水的
  • Python:处理图像并保存到文件流

    我需要使用 python 处理图像 应用过滤器和其他转换 然后使用 HTTP 将其提供给用户 现在 我正在使用 BaseHTTPServer 和 PIL 问题是 PIL 无法直接写入文件流 因此我必须写入临时文件 然后读取该文件 以便将其发
  • Keras 可以处理不同尺寸的输入图像吗?

    Keras 可以处理不同尺寸的输入图像吗 例如 在全卷积神经网络中 输入图像可以具有任意大小 然而 我们在用Keras创建网络时需要指定输入形状 因此 我们如何使用 Keras 来处理不同的输入尺寸而不将输入图像调整为相同的尺寸 谢谢你的帮
  • 使用Python对图像进行反转和平移

    我编写了以下代码来循环遍历文件夹中的所有图像 创建其底片并将其保存在新的相似名称下 我怎样才能做同样的事情来将它们向右平移 5 个像素 Code from PIL import Image import PIL ImageOps impor
  • 承诺的反面是什么?

    承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
  • 在防风草模型上使用 VIP 包计算重要性度量

    我正在尝试使用 vi firm 在防风草中制作的逻辑回归模型上计算特征重要性 对于正则表达式 我将使用 iris 数据集并尝试预测观察结果是否为 setosa iris1 lt iris gt mutate class case when
  • 使用 TensorFlow 和 Keras 的卷积神经网络精度较低 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我计划创建一个 CNN 来预测蘑菇类型 并从互联网上收集了 2500 多张照片 数据集有 156 个类别 不同类型的蘑菇 我在 Tensorfl
  • 有向无环图的人类可读文本表示

    一棵树有一堆人类和机器可读的文本表示 例如嵌套列表 以各种表示形式 例如 JSON 和 YAML 和 XML 与缩进相结合 它们使我们很容易想象得到的结构 但我没有看到任何具有相同水平可读性的东西有向无环图 https en wikiped
  • 期望最大化算法的数值示例[重复]

    这个问题在这里已经有答案了 由于我不确定给出的公式 有人可以提供 EM 算法的简单数字示例吗 一个非常简单的具有 4 或 5 个笛卡尔坐标的坐标就可以了 那这个呢 http en wikibooks org wiki Data Mining
  • Keras 错误:预计会看到 1 个数组

    当我尝试在 keras 中训练 MLP 模型时出现以下错误 我使用的是 keras 版本1 2 2 检查模型输入时出错 您输入的 Numpy 数组列表 传递给您的模型的尺寸不是模型预期的尺寸 预期的 查看 1 个数组 但得到以下 12859
  • 如何命名变量

    您使用什么规则来命名变量 哪里允许使用单字母变量 你在名字中加入了多少信息 例如代码怎么样 你最喜欢的无意义变量名是什么 在 foo 和 bar 之后 为什么它们被拼写为 foo 和 bar http en wikipedia org wi
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • Azure 机器学习 - CORS

    我已经搜索了几个小时 但找不到任何可以回答这个问题的东西 我创建并发布了新的 Azure 机器学习服务 并创建了一个终结点 我可以使用 Postman REST 客户端调用该服务 但通过 JavaScript 网页访问它会返回一个控制台日志
  • 有人真正有效地实现了斐波那契堆吗?

    你们中有人曾经实施过斐波那契堆 http en wikipedia org wiki Fibonacci heap 几年前我就这样做了 但它比使用基于数组的 BinHeaps 慢了几个数量级 当时 我认为这是一个宝贵的教训 告诉我们研究并不
  • 是否可以使用具有余弦相似度的 KDTree?

    看来我不能使用这个相似度度量sklearn例如 KDTree 但我需要 因为我正在使用测量单词向量相似度 对于这种情况 快速鲁棒定制算法是什么 我知道关于Local Sensitivity Hashing 但它应该经过大量调整和测试才能找到
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • 在 R 中绘制决策树(插入符)

    我已经训练了一个数据集rf方法 例如 ctrl lt trainControl method LGOCV repeats 3 savePred TRUE verboseIter TRUE preProcOptions list thresh
  • 如何在 keras 模型中使用张量流度量函数?

    使用Python 3 5 2张量流RC 1 1 我正在尝试在 keras 中使用张量流度量函数 所需的功能接口似乎是相同的 但调用 import pandas import numpy import tensorflow contrib k
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • Bitmap.Maketransparent 函数的不同结果

    我的问题是我想让图像背景透明 以下功能对我来说效果很好 但在另一台机器上进行测试时 我发现有很多伪影颜色 并且透明度不像我的机器和其他一些机器上那么清晰 我正在使用调试版本 测试是在发布版本上完成的 但即使使用发布版本 我们也会在不同的机器

随机推荐