基本上,我的工作场所有一个提供 OCR 功能的系统。该过程是,第三方应用程序被配置为显示捕获的屏幕(在 OCR 过程中),并且用户坐在 pc 上确保捕获的数据是正确的。
此捕获阶段对每个字段进行验证。例如,如果文件是特定客户的发票,则根据参考数据验证发票的供应商。验证码是我自己从Visual Studio 2008解决方案生成的编译后的.net dll的形式。
第三方接口用于捕获表单和我编写的代码之间的通信。一个例子是;
#region GetLinesTotal
/// <summary>
/// Gets the total for e.g. all VAT lines from the table
/// </summary>
/// <param name="oCSM">ITisClientServicesModule</param>
/// <param name="oTab">field table object</param>
/// <param name="fieldName">partial fieldname of table field (without the $XXXX)/param>
/// <returns>total as a string, empty string if all values empty</returns>
public static string GetLinesTotal(ITisClientServicesModule oCSM,ITisFieldTableData oTab, string fieldName )
{
string sLineTot = string.Empty;
ErrHandling.TryInit(oCSM);
string sFunction = "GetLinesTotal";
try
{
decimal dTot = 0m;
string sTemp = string.Empty;
for (int i = 0; i< oTab.NumberOfRepetitions;i++)
{
sTemp = Utils.GetFieldCont(oTab.ParentForm,fieldName + "$" + i.ToString("X").PadLeft(4,'0')).Trim();
if (sTemp != string.Empty)
{
dTot += Convert.ToDecimal(sTemp);
sLineTot = dTot.ToString();
}
}
}
catch (Exception ex)
{
ErrHandling.errHandler.LogMsg(ex.ToString(),sFunction,CLASS_NAME,TIS_SEVERITY.TIS_ERROR);
sLineTot = "INVALID";
}
return sLineTot;
}
#endregion GetLinesTotal
我希望做的是创建一个抽象层,从该代码中删除第 3 方接口(分离关注点),这将允许更轻松的测试(TDD)等。
我对这些方法不熟悉,如果我做出任何错误的假设,我深表歉意。我只是想知道是否可以就如何继续编写代码获得一些建议。在某些时候,我们(公司)可能会选择使用不同的第 3 方 OCR 应用程序。
提前致谢