基本的に、私の職場には 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
私がやりたいことは、抽象化のレイヤーを作成し、このコードからサードパーティのインターフェイスを削除して (懸念を分離して)、テスト (TDD) などを容易にすることです。
私はこれらのアプローチに不慣れであり、間違った仮定をした場合はお詫び申し上げます。コードを進める方法についてアドバイスをいただけないかと思っていました。ある時点で、私たち (会社) は、別のサードパーティの OCR アプリケーションを使用することを選択する場合があります。
前もって感謝します