首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文档图像处理

文档图像处理
EN

Stack Overflow用户
提问于 2011-10-07 23:02:43
回答 3查看 2.1K关注 0票数 11

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-15 05:55:06

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

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

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

使用上一个角度来拉直图像。此时,OCR是可能的,但您将丢失文本块的空间信息,这将使后处理变得比需要的困难得多。取而代之的是,通过水平闭合来查找文本的斑点。

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

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

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

代码语言:javascript
运行
复制
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
票数 12
EN

Stack Overflow用户

发布于 2011-10-09 22:42:17

我们用于倾斜角度检测的论文是: Gatos et在数字化文档中的倾斜检测和文本行位置确定。阿尔。本文的唯一限制是它可以检测最高为-5度和+5度的倾斜。在那之后,我们需要一些东西来给用户一个消息!:)

在您的案例中,主要是发票扫描,您可以很好地使用:多分辨率分析,通过标记et从具有灰度背景的文档中提取参考线。阿尔。

我们用MATLAB写的代码,如果你需要帮助,请告诉我!

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 08:55:29

我曾经参与过一个类似的项目,作为OpenCV的长期用户,我最终再次使用了它。OpenCV是一个提供C和C++编程接口的。

我发现了一个有趣的博客,上面有一篇关于使用OpenCV的how to detect the skew angle of a text的文章,然后是另一篇关于how to deskew的文章。

为了检索文档的文本并能够将较小的图像传递给tesseract,我建议使用bounding box技术。

我不知道图像采集过程是否是您的责任,但如果是的话,您可能想看看如何做camera calibration with OpenCV来修复由一些相机镜头造成的图像失真。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7689099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档