我已经使用Kofax Transformation Modules 3年了,而且我还不确定数据库定位器是如何工作的。
我有一个非常简单的数据库,有一堆列。 我有一个非常简单的PDF文档,OCR已经完成。
我想根据单个列的值从数据库中检索一条记录。 因此,如果在文档中找到此列中的值,我希望数据库定位器返回相应的记录,100%置信(或者对于此单个值,OCR置信度是多少)。
最后但并非最不重要的是,我希望这种信心能够与最小的信心相结合。我在数据库定位器的属性(常规选项卡)中设置。
但它似乎不可能 请参阅,我的PDF文档包含一个由OCR读取的值,该值与数据库列100%匹配 定位器以所谓的100%置信度返回记录,因为我在该单个列上设置了搜索掩码。
但是,如果我将最小信心置于高于34%的任何值,则不会返回记录。
为什么?怎么修好?
我是否真的必须使用脚本定位器来做我想要的事情,这看起来并不复杂?
答案 0 :(得分:4)
当数据库定位器运行时,它会尝试查找与文档OCR最匹配的查找记录。您看到的行为的关键是它首先执行实际模糊搜索,返回满足最小置信度的记录,然后然后定位器本身会执行其他处理:增加或降低记录的置信度取决于它们是否符合定位器中定义的字段,搜索遮罩或区域设置。
这种行为的好处是内存和处理效率。核心模糊搜索索引可以快速确定哪些记录满足初始置信度阈值,然后数据库定位器只需要将这些记录加载到内存中并进行后期处理。替代方案是,在后处理将置信度推高到阈值以上的情况下,需要加载所有记录以进行后处理。这会更直观,但效率更低。
如果您只打算搜索那一列,而其他列只是您想要返回的数据,那么请确保该列是唯一被索引的列。打开数据库的属性时,它会显示带有复选框的字段名称。检查的任何字段都将被编入索引,并且是定位器尝试在文档上查找的内容的一部分。如果您检查了一堆实际上没有在文档上的字段,您可能会降低信心,特别是如果您还有一个非零值的定位器设置“Penalty for empty fields”。
使用KSMS时,由于KSMS正在构建和提供索引,因此无法在Project Builder中更改索引列。而是在KSMS管理中打开数据库的导入设置,并看到复选框中有“要使用的列”部分。如果您通过上载文件而不是指向UNC路径来配置数据库,则需要再次上载它才能更改索引的列。
对于任何将此作为传统数据库问题阅读的人: KTM中此上下文中的“数据库”从CSV或关系数据库中获取记录并对其进行索引以进行模糊匹配。这种核心模糊搜索功能以几种方式使用,其中一种是数据库定位器。
文档提及数据库定位器处理与模糊搜索分开: 脚本帮助主题“特定列中的数据库查找”显示了如何使用脚本中的模糊搜索(从脚本窗口:帮助>脚本帮助,然后脚本示例>特定列中的数据库查找),但它也提到了模糊搜索本身与数据库定位器处理的其他一些设置分开。
答案 1 :(得分:2)
只是为斯蒂芬已经很好的答案添加更多见解。首先,数据库定位器(DBL)存在一些已知问题,并且在使用搜索掩码时具有最小的置信度。我们对此没有明确的解释,但是我们观察到DBL可能会遗漏那些返回的记录更高的记录,特别是在处理索引中的数百万条记录时。我们搜索了一次客户ID,并将阈值设置为.8,并且返回的记录数为100. DBL返回的记录范围为.8和.98,但不是最终记录。然而,将最小置信度提高到1确实会产生它。
此外,这里是如何计算数据库定位器的可信度。首先,让我们看一下DBL中的权重:
然后将每个子场的置信度乘以权重。假设DBL找到了第一个置信度为1的名字,你说它“非常重要” - 加权置信度值为1.8。对每个子字段重复此操作,记录的最终置信度是所有置信度和权重的总和。
这是一个例子:让我们假设有四个不同权重的子字段。我们还假设我们的DBL找到了对名字和姓氏的自信匹配(名字为95%,姓氏为100%);这个城市有一个自信的打击,但不是邮政编码:
First Name Street Zip City
--------------------- ------------ -------- ------ ------
Importance (weight) 1.4 1.4 0.2 0.2
Confidence 0.95 1 0.2 1
weighted Confidence 1.33 1.4 0.04 0.2
--
TOTAL: 93%
记录的总置信度为0.93,这是计算方式:
(1.33 + 1.4 + 0.04 + 0.2 ) / (1.4 + 1.4 + 0.2 + 0.2) = 0.928125