【问题标题】:How to run a custom action method at the Field level如何在字段级别运行自定义操作方法
【发布时间】:2019-01-29 02:00:23
【问题描述】:

我在 datacap 中有一个项目,可以读取图像、pdf 和 csv,识别表格并以 JSON 格式导出这些表格。

为此,我使用 Datacap Template for C# 编写了一个自定义操作。

此自定义操作中的第一个方法用于加载 CSV,它工作正常,因为它从批处理级别开始,因此我直到后来才意识到我的问题。

这是原型

public bool XLSToJPG(string filePath);

一切都很好,直到我编写了第二种方法来为我的 datacap 中识别的每个字段(例如字符的置信度)编写一些日志。意识到我不能调用其他级别而不是批处理,例如文档、页面、字段或字符级别。

第二种方法的原型

public bool getFieldInfo();

当调用该方法进行测试时,我正在打印当前级别的日志。如果打印 0 则为批次级别, 1、2、3、4分别为Document、Page、Field、Character

我写了日志,试图查看该方法是否被任何级别调用。 在规则集中,我设置了“在...开始时运行”并选择“任何对象”而不是字段。这意味着应该为所有级别调用它。没用。

不管我尝试什么级别,它总是打印 0 作为当前级别。

首先,方法(操作)在获得前一个函数的字段后立即在函数内部调用,然后我尝试了它自己的规则,然后在它自己的规则集中,0 运气;'(。

这是我要运行的方法

    public bool getFieldInfo() {
        bool response = false;

        WriteLog("Getting field confidence...");
        WriteLog("Current Level: " + DCO.ObjectType());

        string confidence = DCO.AltConfidenceString[0];

        WriteLog("The current field confidence is: " + confidence);

        response = true;

        //switch (DCO.ObjectType()) {
        //    case Level.Field:
        //        break;
        //    default:    
        //        WriteLog("getFieldInfo should run on the field level.");
        //        break;
        //}


        return response;
    }

您可以看到我是如何用尽选项并移除开关以在每次调用时打印日志的,它总是打印“getFieldInfo 应该在字段级别运行”。

当我在规则的属性中设置它时,应该只在字段级别调用该操作。

目前我让它在“任何对象”上运行

【问题讨论】:

    标签: c# ibm-datacap


    【解决方案1】:

    好的.. 所以我假设 dll 是用其中的各种函数创建的,并且您想要在字段级别的第二个函数。 -如果您使用的是datacap studio(当然会),左侧将有第一个带有文档层次结构的框.. -您可以从规则集(中间)中设置一个函数,该函数是从您的 dll 添加的,显示在最右侧。 - 您可以将该函数添加到文档层次结构中的一个字段,该字段仅在该字段在规则集中执行以检查任何内容时运行。

    我会在回家时尝试获得一些屏幕保持..

    希望对你有帮助

    【讨论】:

    • 目前我正在使用一个名为 FindTableValueRegex 左右的动作库,我现在不记得这个名称,但它的作用是识别文档中的表格。首先,您必须创建一个布局识别,我包含操作 ocr_a->Recognize() 并为我创建该布局,然后我运行 FindTableValueRegex 并且我可以从表中选择值,它将动态创建字段,所以有没有在 DCO 中定义的字段。它们是在运行时创建的。
    • 当您在 c# 中从模板创建新的 Datacap 自定义操作时,我已经运行了示例方法,并且该方法在每个级别中运行。奇怪的是为什么它对我的不起作用,因为我修改了相同的模板,我唯一编辑的是方法名称及其代码,删除了模板方法,并在 TheRRX 文件中创建了 xml 以便它可以从 datacap studio 加载。至少我知道可以在 c# 中运行这样的关卡,我似乎错过了一些让我无法工作的东西。
    • ok .. 尽量保持原样,不要删除任何东西.. 运行 dll 所需的方法/函数很少。只需复制粘贴现有的示例方法并重命名它们..
    • 如果这个答案有用,请考虑打勾作为答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多