gpt4 book ai didi

ios - 扫描名片 Tesseract 和 Leptonica iOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:11 26 4
gpt4 key购买 nike

我正在尝试使用 tesseract OCR 扫描名片,我所做的只是在不进行预处理的情况下发送图像,这是我正在使用的代码。

 Tesseract* tesseract = [[Tesseract alloc] initWithLanguage:@"eng+ita"];
tesseract.delegate = self;
[tesseract setVariableValue:@"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.-()" forKey:@"tessedit_char_whitelist"];

[tesseract setImage:[UIImage imageNamed:@"card.jpg"]]; //image to check
[tesseract recognize];

NSLog(@"Here is the text %@", [tesseract recognizedText]);

Picture of card

This is the output

如您所见,准确度不是 100%,这不是我关心的问题,我想我可以通过一些简单的每次处理来解决这个问题。但是,如果您注意到它混合了底部的两个文本 block ,将地址和其他卡片上可能的其他信息分开。

我怎么可能使用 Leptonica(或者其他东西,也许是 OpenCV)以某种方式对文本进行分组?可能单独发送图像上的文本区域以进行 tesseract 扫描?我已经在这个问题上停留了一段时间,欢迎任何可能的解决方案!

最佳答案

我建议使用一种称为“运行长度平滑算法”(RLSA) 的算法。该算法用于许多文档图像处理系统,但并非每个系统都将其作为 API 的一部分公开。

original paper于 1982 年出版,需要付费。但是,许多其他关于文档图像处理的论文都引用了相同的算法,您可以在其中轻松找到实现细节和改进。

这样的一篇论文是这样的:http://www.sciencedirect.com/science/article/pii/S0262885609002005

基本思路是逐行扫描文档图像,记录字母间距的宽度。

然后,可以通过过滤间隙的宽度并将小间隙设置为与文本相同的颜色来组合附近的文本字符。结果将是大型连接组件,表示:

  • 的话,
    • 通过缩小字符之间的间隙,
  • 文本行,
    • 通过缩小单词之间的空隙,以及
  • 段落
    • 逐列扫描,然后缩小文本行之间的垂直间隙。

如果您无法访问任何公开此功能的文档图像分析库,您可以通过以下方式模拟效果:

  • 使用形态学运算(morphological closing),然后
  • 对结果进行连通分量标记。

大多数图像处理库(例如 OpenCV)都提供此类功能。采用这种方法的效率可能较低,因为您必须使用不同的文本间隙大小重新运行算法才能实现不同级别的聚类,除非用户向您的应用程序提供文本间隙大小。

关于ios - 扫描名片 Tesseract 和 Leptonica iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21487000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com