在IT领域,OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文本转换为机器编码文本的技术,常用于扫描文档、图片等场景。在本项目“C# winform OCR文字识别”中,我们将探讨如何利用C#编程语言和Windows Forms(winform)框架来实现一个简单的OCR应用。 我们需要理解C#和Winform的基本概念。C#是一种面向对象的编程语言,由微软公司开发,广泛应用于桌面应用和游戏开发。Winform是.NET Framework的一部分,提供了一个创建桌面应用程序的平台,具有丰富的用户界面控件和事件处理机制。 在Winform应用中集成OCR功能,通常会用到第三方OCR库。常见的有Tesseract OCR,这是一个开源的OCR引擎,支持多种语言,并且可以方便地通过C#接口进行调用。我们需要在项目中引用Tesseract的相关库,例如NuGet包“Tesseract”。 1. **安装Tesseract**: 我们需要在项目中安装Tesseract的C#绑定库。通过Visual Studio的NuGet包管理器,搜索并安装“Tesseract”。这将提供必要的API,以便于我们的C#代码与OCR引擎交互。 2. **设置OCR引擎**: 安装完成后,需要配置OCR引擎,包括指定语言数据包的位置,这通常包含在Tesseract的安装目录下。语言包决定了OCR引擎能识别哪些语言的文本。 3. **加载图像和预处理**: 在Winform应用中,可以创建一个图像控件让用户选择或上传图片。之后,我们需要对图像进行预处理,如灰度化、二值化等,以提高识别准确性。这可以通过Image类提供的方法实现。 4. **执行OCR识别**: 使用Tesseract提供的API进行文字识别。调用`engine.Recognize(image)`方法进行识别,其中`engine`是Tesseract的实例,`image`是待识别的图像。 5. **处理识别结果**: 识别的结果会以`ITesseractResult`对象返回,包含识别出的文本和相关元数据。我们可以遍历结果,将识别的文本显示在Winform的文本框或其他控件上。 6. **优化和错误处理**: 由于OCR技术可能存在误识别,我们可能需要添加一些后处理步骤,如去除多余的空格、纠正拼写错误等。同时,也要处理可能出现的异常,确保程序的稳定运行。 7. **用户界面设计**: 为了提供友好的用户体验,我们需要设计一个简洁直观的Winform界面,包括选择图片按钮、显示图片区域、输出识别文本的文本框以及可能的设置选项。 在实际项目中,我们可能还需要考虑性能优化,如异步处理图像以避免阻塞UI线程,以及提供批量处理等功能。“C# winform OCR文字识别”项目涵盖了图像处理、C#编程、第三方库集成以及UI设计等多个方面,是一个综合性的实践项目,对于提升开发者在这些领域的技能很有帮助。
2026-04-01 13:13:25 334.93MB OCR 文字识别 winform
1
在现代工业自动化领域中,EtherCAT(Ethernet for Control Automation Technology)作为一种高效的工业以太网通信协议,广泛应用于各类控制系统。EtherCAT协议以其卓越的数据传输性能,较低的硬件成本和出色的实时性特点,使得它成为工业通信标准中极为重要的一环。在这一背景下,基于C#实现的EtherCAT主站框架程序显得尤为重要。 C#语言作为一种面向对象的编程语言,它由微软公司开发,是.NET框架的核心组件之一。C#以其安全性、稳定性和强大的面向对象特性,使得开发人员能够高效地构建各种应用程序。特别是在工业控制领域,C#的这些优势结合其优秀的开发环境Visual Studio,使得开发者可以快速地创建出稳定且易于维护的应用程序。 基于C#实现的EtherCAT主站框架程序,能够在各种工业自动化控制系统中担当核心的角色。该框架程序的开发涉及到EtherCAT协议栈的实现,涉及到协议的各个方面,包括数据链路层的帧处理、网络拓扑结构的识别、从站设备的配置与管理、以及数据交换和同步等核心功能。 在实现上,主站框架程序需要具备处理复杂工业网络环境的能力,能够与众多从站设备进行精确的时间同步,并保证数据交换的实时性和可靠性。同时,考虑到不同工业应用的特殊需求,该框架程序往往需要支持灵活的配置选项,如支持不同厂家的从站设备,兼容多种通信接口,支持冗余机制等。 此外,随着工业物联网(IIoT)的发展,基于C#实现的EtherCAT主站框架程序还需要具备与上层应用系统集成的能力,如MES(制造执行系统)、ERP(企业资源计划)等。这要求框架程序提供良好的API接口,使得能够方便地进行数据交换和控制逻辑的集成。 在实现过程中,开发者需要详细解读EtherCAT的官方协议规范,理解其通信机制和数据交互流程。同时,还应关注通信的安全性,保证工业网络在面对各种潜在威胁时的稳定性。这就要求主站框架程序在设计时要考虑到加密机制、访问控制和异常处理机制等安全特性。 具体到C#的实现技术,开发者需要利用.NET框架提供的各种库和工具,如Socket编程、线程管理、内存管理等,来构建完整的通信逻辑。同时,随着.NET框架的不断更新,开发者还需要关注最新技术动态,以利用最新的特性来提高程序的性能和稳定性。 在用户界面设计方面,良好的UI/UX设计对于操作人员来说至关重要。基于C#的WPF(Windows Presentation Foundation)或UWP(Universal Windows Platform)等技术可用于创建直观、易操作的用户界面,进一步提高工作效率。 此外,为了方便开发者和最终用户对主站框架程序的测试和调试,通常会集成一些诊断工具和日志记录功能。这些工具可以帮助开发者快速定位问题,并对系统的运行状况进行监控和分析。 基于C#实现的EtherCAT主站框架程序在工业自动化领域扮演着极为重要的角色,它不仅需要涵盖广泛的EtherCAT协议特性,还应具备高度的可配置性、安全性和集成能力,以适应不断变化的工业自动化需求。
2026-03-31 09:25:07 1.48MB
1
基于can总线的dsp28335升级方案 包括bootloader源码,app源码,上位机。 上位机用c#,vs2013。 升级过程见视频。 示例工程为62kb。 ------------------------------------------------------------------ 基于CAN总线的DSP28335升级方案是一套完整的系统升级解决方案,涉及多个关键文件,包括bootloader和应用程序(app)的源代码,以及用于升级过程的上位机软件。该方案采用C#语言开发上位机程序,并使用Visual Studio 2013作为开发环境。整个升级方案不仅包括代码资源,还提供了一个视频指南来辅助说明升级过程。此外,通过提供一个具体的示例工程,方案的设计者向用户展示了如何在实际嵌入式系统中应用这种升级机制,示例工程的大小为62KB。 升级方案的核心是CAN总线技术,这是一种被广泛应用于汽车和工业电子设备中的网络通信协议。DSP28335是德州仪器(Texas Instruments)的一款高性能数字信号处理器(DSP),具有强大的数据处理能力和丰富的外设接口,非常适合用于需要实时处理的应用场景。在基于CAN总线的DSP28335升级方案中,DSP28335不仅作为主控制器,还需要负责与CAN总线网络中的其他设备进行通信。 升级方案的关键组成部分包括bootloader,它是一种在嵌入式系统启动时首先加载的程序,负责初始化硬件设备并载入主应用程序。在DSP28335的升级过程中,bootloader确保了新的固件能够安全且有效地被传输和写入DSP的存储器中。与此同时,上位机软件则负责与DSP设备交互,发送升级指令和固件文件,通常通过USB或者串口等方式实现与目标设备的连接。 由于升级过程可能会遇到各种问题,因此该方案还包括了升级过程视频,以直观的方式向用户展示如何操作。视频中可能包含了如何设置上位机软件,如何连接DSP设备以及在升级过程中可能遇到的常见问题和解决方法。 除了源码和软件,方案中还提供了一系列文档,它们详细介绍了升级方案的背景、目的和实现方法。这些文档有助于技术人员更好地理解整个升级方案的设计思想和实施细节,从而为实际部署提供理论支持。 文档中可能还包含了对CAN总线技术的深入探讨,解释了它的工作原理、在电子设备升级中的作用以及如何利用CAN总线实现设备间的高效通信。此外,还可能探讨了在不断发展的科技背景下,嵌入式系统升级需求的增长以及如何通过CAN总线升级方案满足这些需求。 DSP28335升级方案的实施有助于提高设备的性能,增加新功能,同时还能修复已知的软件缺陷,是维护和更新嵌入式系统的重要手段。通过提供完整的源代码和软件工具,用户可以在遵循一定的指导原则下自行对DSP28335系统进行升级和优化。 总结而言,基于CAN总线的DSP28335升级方案是一个综合性的解决方案,它结合了硬件、软件和文档资料,旨在为嵌入式系统提供一种安全、高效且方便的升级途径。通过这种方式,用户可以确保其嵌入式系统能够随时适应最新的技术标准和业务需求,从而保持竞争力。
2026-03-31 09:20:32 648KB paas
1
DSP28035的CAN通信升级方案:包括源码、测试固件与C#上位机开发,支持周立功USBCAN-II兼容盒及BootLoader闪烁指示,DSP28035的CAN升级方案及详细配置说明:使用新动力开发板与C#上位机软件实现固件升级,涉及用户代码、BootLoader代码及硬件连接细节,DSP28035的can升级方案 提供源代码,测试用固件。 上位机采用c#开发。 说明 一、介绍 1、测试平台介绍:采用M新动力的DSP28035开发板,CAN口使用GPIO30\31。波特率为500K。 2、28035__APP为测试用的用户代码,ccs10.3.1工程,参考其CMD配置。 3、28035_Bootloader_CAN为bootloader源代码,ccs10.3.1工程; 4、SWJ为上位机,采用VS2013开发,C#语言。 5、测试使用的是周立功的USBCAN-II,can盒,如果用一些国产可以兼容周立功的,则更这里面的ControlCAN.dll即可。 6、升级的app工程需要生成hex去升级,具体参考我给的工程的设置。 7、BootLoader代码,只有D400这一个灯1s闪烁一
2026-03-31 09:16:04 2.63MB
1
在当今的工业自动化领域,OPC统一架构(OPC UA)成为了一种重要的通信协议,用于确保不同制造商设备间的互操作性与安全性。OPC UA基于服务导向架构(SOA),允许设备和系统能够通过标准化的方式进行数据交换和通信。尽管存在商业授权的OPC UA实现,但对于一些特定场景和小型项目,免授权的开源解决方案显得尤为重要。Open62541是一个用C语言编写的轻量级、跨平台的OPC UA协议栈,它是开源的并且完全符合最新的OPC UA规范。利用C#语言,结合Open62541库,开发者可以创建出自己的OPC UA服务器和客户端。 C#作为一种高效的面向对象的编程语言,拥有广泛的应用范围。当需要在C#中创建OPC UA的服务器或客户端时,可以利用Open62541提供的C语言API来实现。通过这种方式,可以创建出免授权且功能完善的OPC UA服务器或客户端,从而实现与OPC UA客户端或服务器的通信。 创建OPC UA服务器主要涉及以下几个步骤:首先需要在C#项目中引入Open62541的C语言API,这通常通过使用P/Invoke(平台调用)来实现,允许C#代码调用C语言函数。接下来,开发者需要定义服务器地址空间,包括节点、变量、对象等,并编写代码来处理连接、会话管理、订阅、读写变量等服务器核心功能。服务器启动后,便能够接受来自OPC UA客户端的连接请求,并提供数据交换与服务。 创建OPC UA客户端则稍微简单一些,需要实现的功能包括发现服务器、创建会话、读写变量等。客户端向服务器发起连接请求,然后在获得的会话中执行读写操作。C#通过调用Open62541提供的C API函数,可以方便地实现这些操作。 除了基本的功能实现外,还需要考虑到安全性问题。OPC UA协议本身提供了强大的安全机制,包括认证、授权和加密通信等。在使用Open62541时,也需要正确配置和使用这些安全特性,确保数据传输的安全可靠。 实际的开发过程中,开发者还需要关注一些高级特性,比如模型驱动的开发、信息模型的扩展、高性能通信等。这些特性虽然不是创建基本OPC UA服务器或客户端所必需的,但对于构建复杂的工业自动化系统却是十分关键的。 由于OPC UA涉及的技术范围广泛,且规范本身较为复杂,因此在开发过程中,开发者需要深入理解OPC UA的核心概念以及Open62541的API使用方法。此外,开发者还需密切留意Open62541库的更新,以保持与OPC UA最新规范的同步。 C#结合Open62541创建OPC UA服务器/客户端是一种既经济又实用的解决方案,尤其适合那些对成本敏感或者对授权协议有特殊要求的项目。通过细致的规划和开发,即使是免授权的开源实现也能提供与商业解决方案相媲美的功能和性能。
2026-03-30 21:46:22 2.67MB open62541 opcua
1
在软件开发领域,设计出高效且用户友好的打印模板功能一直是开发者们致力追求的目标。随着技术的发展,特别是在C#编程语言及.NET框架的支持下,开发者能够通过可视化工具实现设计打印模板的过程。本文将深入探讨在C#环境下,如何实现一个带有可视化编辑功能的打印模板设计工具,该工具支持拖拽控件,实现了“所见即所得”的设计理念,并且附带完整的测试demo源代码。整个项目完全使用纯.net源码编写,无需依赖任何第三方控件库。 可视化打印模板设计的核心在于提供一个直观易用的界面,让开发者或者最终用户可以像拖拽普通组件一样来布局打印页面。这样的设计使得最终的打印效果能够即时显示在屏幕上,即用户拖动一个控件到界面上,马上就能看到它在打印输出中的具体位置和样式,从而大大简化了模板设计的复杂度。 在实现所见即所得的打印模板设计时,通常会使用图形引擎来渲染用户界面。该引擎需要具备处理各种图形和文本布局的能力,并且支持多种打印参数的配置,如边距、页眉页脚、字体大小等。开发者需要编写相应的代码来响应用户的操作,比如拖拽控件、调整属性等,并且需要把这些操作实时地反映在预览界面上。 在C#中,实现这些功能往往需要依赖Windows窗体(WinForms)或WPF(Windows Presentation Foundation)等框架。WinForms相对更加传统,适合快速开发桌面应用程序,而WPF则提供了更加先进的数据绑定和控件体系结构,适合构建更为复杂和现代化的用户界面。不管选择哪种框架,都需要精心设计控件的逻辑以及它们之间的交互。 由于该项目要求不使用第三方控件库,开发者需要自行实现所有打印相关的功能,包括对打印纸张的处理、打印质量设置、以及打印预览等。这意味着开发者需要深入理解.NET框架中与打印相关的一系列类和方法,例如System.Drawing.Printing命名空间下的PrinterSettings类、PageSettings类等。通过这些类和方法,开发者可以实现打印任务的详细配置,并且把它们整合到可视化界面中。 为了支持测试和验证,该工具还附带了demo源代码。这份源代码是项目的一个重要组成部分,它允许开发者或用户在开发或使用过程中,快速地测试打印模板的实际效果,确保打印输出符合预期。Demo源代码通常会提供一些预设的模板,通过这些模板,用户可以直观地看到添加或修改某些设置后的变化。 在纯.net环境中,所有的功能实现都是基于.NET框架本身提供的API。这种做法的好处在于,它保证了软件的可移植性,兼容性和维护性。因为不需要额外的第三方控件支持,因此不存在外部依赖带来的兼容性问题。此外,使用纯.net代码编写的软件往往更容易获得微软官方的支持和更新,这对于长期维护和升级来说是一个极大的优势。 由于使用了纯.net源码,开发者在阅读和理解代码时会相对容易,因为它们是基于微软官方文档和规范开发的。在进行代码的二次开发、功能扩展或性能优化时,这种开放和透明的代码结构提供了很大的便利。 C#可视化打印模板设计工具不仅仅是一个简单的工具,它背后反映了开发者在软件工程、用户界面设计、以及.NET框架应用等方面的深厚积累。通过提供一个不依赖第三方控件的纯.net源码解决方案,该工具为打印模板设计提供了一个可靠、灵活和高效的选择。
2026-03-30 11:16:25 88.9MB
1
驾驶员理论考试系统是一种专门用于帮助学习者准备理论考试的软件系统,该系统通常包含大量的题目数据库、模拟考试功能以及学习和复习资料。本次提供的文件集合主要面向C#语言开发环境,涉及到计算机程序设计与开发,特别是针对想要获取驾驶执照的人士。 从文件名来看,本文件集包括了完整的研究论文和源代码。论文部分详细阐述了系统设计的理念、开发过程中的技术选型、遇到的问题以及最终的解决方案。论文可能会介绍如何利用C#语言开发一个用户友好的界面,以及如何实现一个高效的题库管理系统,包括题目的增删改查,以及如何实现随机抽题组卷等功能。 源码部分则是系统实现的核心。一个典型的驾驶员理论考试系统源代码可能会包含多个模块,例如: 1. 题库管理模块:管理题目的增删改查,包括题目类型、答案解析、难度系数等。 2. 用户管理模块:包括用户注册、登录、权限验证等功能,确保考生信息和考试记录的安全。 3. 模拟考试模块:模拟真实考试环境,随机抽取题目进行测试,并提供计时器、分数统计和历史成绩查询。 4. 错题本模块:考生可以查看自己在模拟考试中答错的题目,方便复习巩固。 5. 系统设置模块:包括系统参数设置,如题库容量、考试时间等。 6. 数据库设计:使用数据库来存储题目信息、用户信息和考试结果等数据,保证数据的持久化和可靠性。 由于本文件集的名称中包含了“kaic”,这可能是开发该项目的团队名称或者开发者的名字,或者是项目的一个代号。此外,使用C#作为开发语言是因为C#是一种面向对象的编程语言,具有良好的集成开发环境支持(如Visual Studio),并且它是.NET平台上的首选语言,而.NET是微软开发的一个软件框架。因此,使用C#可以方便地进行Windows平台下的应用程序开发。 由于本文件集包含论文和源码,因此对于学习C#和软件开发的人员来说,它不仅可以作为理解一个实际项目的实例,还可以作为学习如何开发类似考试系统的参考资料。对于正在学习计算机科学与技术、软件工程或相关专业的学生来说,这个文件集可能是一个不错的实践项目。 本文件集对于准备考取驾照的人来说,可能是一个很好的自我检测工具。它不仅能够提供模拟的考试环境,帮助考生在正式考试之前适应考试的形式和氛围,还能够帮助考生有针对性地复习考试中常出现的知识点和易错题型。 此外,此类系统对于驾驶学校或相关教育机构来说,也可以作为一种辅助教学的工具。教育机构可以使用该系统为学员提供模拟测试,从而帮助学员更好地准备考试,提高通过率。 本文件集提供了一个以C#语言开发的完整的驾驶员理论考试系统,不仅包括了开发论文,还提供了源码。对于软件开发者、学习计算机编程的学生以及准备考取驾照的人来说,都是一个有价值的资源。
2026-03-28 21:54:23 218.59MB
1
在IT行业中,网络协议是构建和理解网络通信的基础,而HTTP和HTTPS是互联网上最广泛使用的两种协议。本文将深入探讨如何使用C#语言结合FiddlerCore库来实现对这两种协议的抓包功能。 FiddlerCore是Telerik开发的一个强大的HTTP调试代理,它是Fiddler的.NET库版本,允许开发者在自己的应用程序中实现类似Fiddler的功能,如捕获、查看和修改HTTP/HTTPS流量。FiddlerCore适用于那些需要在没有用户交互的情况下,或者在无法使用Fiddler桌面应用的环境下进行网络流量监控的场景。 要使用C#调用FiddlerCore,首先需要安装FiddlerCore库。这可以通过NuGet包管理器完成,添加`FiddlerCore`依赖到你的C#项目中。接着,我们需要在C#代码中初始化FiddlerCore并配置它监听HTTP和HTTPS流量。
2026-03-27 20:47:35 3.56MB 抓包
1
在IT领域,数据库操作是开发过程中的重要环节,无论是在Web应用、桌面应用还是移动应用中,都需要与数据库进行交互来存储和检索数据。在这个场景中,我们关注的是使用C#语言实现对SQL Server、Access和Oracle这三种不同数据库系统的通用操作类源码。这个资源集合可以帮助开发者更方便地进行数据库操作,避免因数据库类型的不同而频繁修改代码。 `DataHelper.cs` 文件很可能是整个数据库操作的核心类。在C#中,数据访问层(DAL)通常包含这样的辅助类,它封装了数据库连接、命令执行、事务处理等常见操作。这个类可能提供了诸如查询、插入、更新和删除数据的静态方法,接受SQL语句或存储过程作为参数。它可能还包含了错误处理和日志记录功能,以确保在遇到异常时能够优雅地处理。 `Tools.cs` 文件可能是工具类,包含一些通用的方法,比如字符串处理、日期时间转换、加密解密、文件操作等。这些辅助函数在处理数据库操作时经常被用到,可以提高代码的可读性和可维护性。例如,它可能有一个方法用于将对象转换为适合存储在数据库的字符串格式,或者从数据库取出的字符串还原为原始对象。 `Taobao.ini` 文件看起来是一个配置文件,通常用来存储数据库连接信息,如服务器地址、数据库名、用户名和密码。这种配置文件允许程序在运行时动态读取数据库连接信息,而不是硬编码在源代码中,提高了代码的灵活性和安全性。开发者可以根据实际的数据库环境修改这个配置文件,而无需修改源代码。 C#的ADO.NET框架为数据库操作提供了基础支持,它包括DataSet、DataTable、DataColumn、DataRow等对象,以及SqlConnection、SqlCommand、SqlDataAdapter等类,这些都可以在`DataHelper.cs` 和 `Tools.cs` 中得到应用。例如,通过SqlCommand对象执行SQL语句,使用SqlDataAdapter填充DataSet或DataTable,然后可以利用这些对象进行数据操作。 对于SQL Server、Access和Oracle的支持,开发者通常会使用对应的ADO.NET提供程序,比如System.Data.SqlClient(SQL Server)、System.Data.OleDb(Access)和System.Data.OracleClient(Oracle)。在`DataHelper.cs` 中,可能会有针对不同数据库类型的条件判断或策略模式,以适配不同的数据库API。 这个源码集合提供了跨数据库平台的数据操作解决方案,简化了开发流程,减少了重复工作。开发者可以通过学习和理解这些源码,提升在C#环境下进行数据库编程的能力,并灵活应对不同数据库系统的需求。
2026-03-27 14:36:42 3KB SQL Access Oracle 数据库操作类
1
在IT领域,尤其是在软件开发中,C#是一种广泛使用的编程语言,它提供了强大的功能和丰富的库来处理各种任务。在本案例中,我们关注的是如何使用C#来处理PDF文件,并通过OCR(Optical Character Recognition,光学字符识别)技术解析其中的文字。下面将详细介绍这个过程及其相关知识点。 我们需要理解PDF解析的基本概念。PDF(Portable Document Format)是一种通用的文件格式,用于存储文档,包括文本格式和图像。在C#中,可以使用多种库来解析PDF,如iTextSharp、PDFSharp或Syncfusion等。这些库允许我们读取PDF内容,包括文本、图像和元数据,从而可以进行进一步的处理或分析。 接下来,我们将焦点转向OCR技术。OCR是一种将扫描的图像或者照片中的文本转换为可编辑和可搜索的机器编码文本的技术。在处理PDF时,如果文档包含无法直接复制的图像化的文本,OCR就显得尤为重要。OCR软件通过识别字母、数字和符号的形状,将其转换为可编辑的ASCII文本。在C#中,我们可以使用Tesseract OCR库,这是一个开源的OCR引擎,由Google维护,支持多种语言,并且有C#的API接口。 使用C#解析OCR的过程通常包括以下步骤: 1. **预处理**:在应用OCR之前,可能需要对PDF页面进行预处理,例如调整图像质量、去除背景噪声、校正倾斜等,以提高OCR识别的准确性。 2. **提取图像**:从PDF中提取出含有文本的图像,这可以通过选择合适的PDF库来完成,例如PDFBox或PDFium。 3. **调用OCR引擎**:使用Tesseract OCR库进行文本识别。设置正确的语言模型,因为不同的OCR引擎对不同语言的支持程度不同。 4. **后处理**:OCR识别的结果可能会包含一些错误,比如错别字或格式问题。因此,后处理阶段可能需要进行校对、拼写检查和格式调整。 5. **保存结果**:将解析出来的文本保存到文件或数据库中,以便后续使用。 在这个项目中,"WindowsFormsApplication1"很可能是一个基于Windows Forms的C#应用程序,它包含了实现上述功能的代码。用户可以通过该程序上传PDF文件,程序会自动调用OCR功能解析PDF中的文本,并将结果保存下来。这种功能在数据录入、文档自动化处理和信息检索等领域有广泛应用。 通过C#和OCR技术,我们可以有效地从PDF文件中提取和保存文本信息,提高工作效率并减少手动输入的工作量。理解并熟练掌握这些技术对于提升软件开发能力至关重要。
2026-03-26 20:24:18 11.73MB PDF解析 OCR技术 C#解析OCR C#解析PDF
1