在现代软件开发中,图像采集和文档转换是常见的需求。Dynamic.NETTWAIN和OCR SDK是两个强大的工具,它们可以帮助开发者实现这些功能。本文将介绍如何将这些工具集成到WinForm应用程序中,以实现图像的采集和转换为可搜索的PDF或文本文件。
Dynamic .NET TWAIN是一个图像采集SDK,专为.NET应用程序优化。它支持从扫描仪、摄像头或本地文件夹获取图像。而OCR SDK则允许将扫描的图像转换为可搜索的PDF或文本文件。虽然这是一个有用的特性,但实现起来并不简单,涉及到准确性、图像格式等多个复杂因素。OCR性能是影响整个过程效率的另一个重要因素。
Dynamsoft的OCR SDK基于高度发达的开源引擎(Tesseract OCR引擎)进行了优化,可以帮助减轻这些负担。通过与Dynamic .NET TWAIN集成,可以用几行源代码创建一个强大的图像采集和处理解决方案。
OCRSDK支持超过40种语言,包括阿拉伯语和各种亚洲语言。通过支持多线程处理,提供高性能的OCR。准确的识别与字体识别相结合,易于与图像采集SDK——Dynamic.NETTWAIN集成。
以下是将OCR插件集成到WinForm应用程序并转换扫描图像为可搜索PDF/文本文件的步骤。
将以WinForm为例。假设已经在开发机器上下载并安装了.NET组件(如果没有,请从Dynamsoft网站下载30天免费试用)。在Visual Studio中打开WinForm应用程序或创建一个新的。从工具菜单中选择“选择工具箱项”。在弹出的对话框中,点击“浏览”并选择Dynamic .NET TWAIN安装文件夹中的DynamicDotNetTWAIN.dll。点击“确定”关闭对话框。将组件拖放到表单上。
Dynamic .NET TWAIN支持从各种来源获取图像,包括扫描仪、摄像头和其他TWAIN/WIA/UVC兼容设备。本文将展示如何从本地磁盘加载现有图像。
this.dynamicDotNetTwain1.SetViewMode(1, 1);
OpenFileDialog filedlg = new OpenFileDialog();
if (filedlg.ShowDialog() == DialogResult.OK)
{
foreach (string strfilename in filedlg.FileNames)
{
this.dynamicDotNetTwain1.LoadImage(strfilename);
}
}
1) 选择语言包并使用OCRTessDataPath属性定义包的路径。Dynamsoft的OCR SDK支持超过40种语言,包括英语、西班牙语、阿拉伯语等。以下示例代码选择英语作为默认语言。其他语言包可以从Dynamsoft网站下载:
string languageFolder = Application.StartupPath;
this.dynamicDotNetTwain1.OCRTessDataPath = languageFolder;
this.dynamicDotNetTwain1.OCRLanguage = "eng";
2) 设置DynamicOCR.dll或DynamicOCRx64.dll的路径以初始化OCR插件。
this.dynamicDotNetTwain1.OCRDllPath = "";
3) 选择OCR结果文件格式并保存。支持的文件格式包括文本、PDF纯文本和PDF图像覆盖文本。通过将格式设置为PDF图像覆盖文本,原始的详细图像/文本位置和格式(如字体名称、字体大小、行宽等)将保持不变。
this.dynamicDotNetTwain1.OCRResultFormat = (Dynamsoft.DotNet.TWAIN.OCR.ResultFormat)this.ddlResultFormat.SelectedIndex;
执行OCR操作并保存结果:
byte[] sbytes = this.dynamicDotNetTwain1.OCR(this.dynamicDotNetTwain1.CurrentSelectedImageIndicesInBuffer);
if (sbytes != null)
{
SaveFileDialog filedlg = new SaveFileDialog();
if (this.ddlResultFormat.SelectedIndex != 0)
{
filedlg.Filter = "PDF File(*.pdf)|*.pdf";
}
else
{
filedlg.Filter = "Text File(*.txt)|*.txt";
}
if (filedlg.ShowDialog() == DialogResult.OK)
{
FileStream fs = File.OpenWrite(filedlg.FileName);
fs.Write(sbytes, 0, sbytes.Length);
fs.Close();
}
}
else
{
MessageBox.Show(this.dynamicDotNetTwain1.ErrorString);
}
要将应用程序分发给最终用户,请将以下文件复制到客户端机器上,与EXE文件一起。