C# SDK實現百度雲OCR的文字識別功能_#C#

        

        為了驗證Dify對票據識別的正確率,博主開發了一個批量調用Dify API 完成OCR識別工具,在RPA項目上測試樣本數據識別的正確率。只需要點一下按鈕,程序就放出10次請求,然後把AI智能體OCR識別的結果全部返回。感謝zoujiawei提供的DifyWebClient類庫,我們只需要直接調用就行,不過還是有一些地方需要博主説明一下:

1、Dify 調用API上傳文件,還是老問題,如果設置了多個文件,你需要給數組,如果單個文件,你不能給數組,否則接口調用會報錯。DifyWebClient類庫提供的是多個文件功能,所以Dify中也需要設置成多個文件。

2、DifyWebClient類庫,需要在線程中調用,比如winform中使用,你會一直卡在那兒,但如果放線程中,使用就正常了。

網上C# 調用Dify API的代碼居然很少,我來提供一篇吧。WinForm .net8

using DifyWebClient.Net;
using DifyWebClient.Net.ApiClients;
using DifyWebClient.Net.Enum;
using DifyWebClient.Net.Models.Base;
using DifyWebClient.Net.Models.Knowledge;
using DifyWebClient.Net.Models.WorkflowApp;

namespace DifyUpload
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;

        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {

            for (int i = 0; i < 10; i++)
            {
                Task task = Task.Run(() => Thread1());
            }

        }

        void Thread1()
        {

            //上傳需要識別的圖片
            WorkflowAppApiClient workflowAppApiClient = new WorkflowAppApiClient("https://agent.cloud-uat.XXXXX.cn/v1", "app-65i3syVDIQ6U3op3mVdKEXXX");
            FileUploadResponse fileUploadResponse = workflowAppApiClient.FileUpload(FileToBinaryConverter.ConvertFileToBinary("d:\\527800.png"), "527800.png");
            // ps(listBox1, fileUploadResponse.id);

            //準備調用工作流的參數,注意:智能體的文件輸入必須是多個文件,設置成單文件會報錯!
            Dictionary<string, object> inputkeyValuePairs = new Dictionary<string, object>();
            List<FileListElement> fileListElements = new List<FileListElement>();
            fileListElements.Add(new FileListElement(upload_file_id: fileUploadResponse.id, "image", "local_file", null));
            inputkeyValuePairs.Add("input_file", fileListElements); // input_file 是自己在dify中的命名參數

            //調用工作流
            ExecuteWorkflowRequest executeWorkflowRequest = new ExecuteWorkflowRequest(inputkeyValuePairs, user: "abc-123", ResponseMode.Blocking);
            CompletionResponse completionResponse = workflowAppApiClient.ExecuteWorkflow(executeWorkflowRequest);

            //  ps(listBox1, completionResponse.RealJsonstring);
            //   textBox1.Text = (completionResponse.data.outputs["text"].ToString());
            // Console.WriteLine(completionResponse.RealJsonstring);
            // ps(listBox1, completionResponse.data.outputs["text"].ToString());
            ps(listBox1, completionResponse.data.outputs["text"].ToString());
        }

        public void ps(ListBox box, string s)
        {
            String line = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s;
            box.Items.Add(line);
        }
    }
}

----------2025.10.23--------------

為了批量調用Dify 完成OCR識別後,校對識別的內容,然後去不斷優化修改提示詞,工具升級了自動校對全部返回文本的功能。

C# SDK實現百度雲OCR的文字識別功能_#Dify_02