动态Web TWAIN OCR插件使用指南

动态Web TWAIN是一个基于浏览器的图像处理工具,它允许开发者忽略底层细节,专注于重要的功能实现。2012年7月,Dynamic Web TWAIN 8.0版本发布,引入了OCR(光学字符识别)和条形码识别两项新技术。本文将重点介绍OCR插件,它允许开发者在不担心底层实现的情况下使用这项技术,同时保持灵活性。

Web版本的SDK控制

Web版本的SDK由JavaScript控制,这是一种几乎所有Web开发者都熟悉的脚本语言。提供了广泛的函数和属性库,使开发者可以完全控制并轻松实现自己的界面。支持所有流行的浏览器,底层的Web TWAIN软件既提供作为ActiveX控件,也提供作为浏览器插件。使用Internet Explorer的用户可以使用ActiveX版本,而使用其他浏览器(如Firefox、Chrome、Safari和Opera)的用户可以使用插件版本。对于不使用Windows操作系统的用户,还提供了Mac插件版本。

Dynamic OCR支持的功能

Dynamic OCR支持超过40种语言,包括阿拉伯语和各种亚洲语言。支持所有常见的文件格式:jpg、gif、png、bmp、tiff等。支持多页文档处理、手写和印刷字符、字体名称和大小识别、详细的定位和格式信息,以及保持原始文档外观的PDF输出。此外,还可以在执行OCR之前与Dynamic Web TWAIN集成,以便编辑图像。

如何在您的应用中使用OCR

以下代码示例都是用JavaScript提供的,假设已经创建了一个名为WebTWAIN的WebTWAIN对象。

OCR开始之前,可以更改一些设置,这些设置会影响输出。虽然提供了合理的默认值,但在许多情况下,更改设置可能是合适的。

OCRDllPath:需要设置为OCR dll文件所在的路径。默认情况下,设置为当前工作目录。

OCRTessDataPath:需要设置为应用程序的根路径,其中包含您希望使用的语言的tessdata文件夹。

OCRLanguage:默认设置为"eng"。这指的是您希望使用的语音文件的前缀。

OCRResultFormat:一个重要的设置,它决定了OCR结果是否保存到文本文件或PDF文件中。

OCRUseDetectedFont:确定OCR在输出PDF文档时是否尝试使用检测到的字体。检测到的字体需要在系统上存在才能使用,因此请谨慎使用此选项。

OCRUnicodeFontName:如果OCRUseDetectedFont关闭,则使用备用字体。此字体也必须存在于系统上。如果没有提供,库将尝试使用适合使用语言的适当字体。

OCRPageSetMode:默认设置对于大多数操作来说是可以的。这会影响OCR确定页面格式的方式,默认设置为自动。

在这个示例中,将对加载到TWAIN中的给定图像执行英文OCR。结果保存到名为OCRResults.txt的文本文件中。由于只进行文本输出,不需要担心任何字体设置,OCRDllPath和OCRTessDataPath等所有其他设置都使用默认值。

function DoOCR(imageIndex) { WebTWAIN.OCRLanguage = "eng"; WebTWAIN.OCRResultFormat = 0; // 文本 return WebTWAIN.OCR(imageIndex, "OCRResults.txt"); // 返回true表示成功,false表示失败 }

OCR函数非常灵活,还允许直接从多个文件加载图像,文件路径相对于工作目录。在这个示例中,还将使用不同的OCRTessDataPath设置,并使用简体中文作为语言。

function ChineseOCR() { WebTWAIN.OCRLanguage = "chi_sim"; WebTWAIN.OCRResultFormat = 0; // 文本 WebTWAIN.OCRTessDataPath = "../../tesseract-chinese/"; // 应包括最终/ return WebTWAIN.OCRDirectly("wendang1.tif|wendang2.tif|webdang3.tif", "ChineseOCR.txt"); }

使用中文作为语言展示了Dynamic OCR的UTF输出功能。生成的文本以UTF-8 Unicode编码,文件应由支持UTF-8的编辑器读取。

Dynamic OCR还支持直接输出到PDF文件。最简单的方法是输出纯文本,这对于主要包含文本的文档和扫描非常完美。下面的屏幕截图显示了下面源代码的PDF输出结果的一部分。

function OCRToPDF() { WebTWAIN.OCRLanguage = "eng"; WebTWAIN.OCRResultFormat = 1; // 纯文本PDF return WebTWAIN.OCRDirectly("Demo_OCR1.png", "Plain.pdf"); }

正如清楚看到的,纯文本PDF完美地保持了所有文本及其定位信息。然而,颜色、斜体和图像丢失了。在许多情况下,这可能是可以接受的或期望的结果,但在其他情况下,图像很重要,应该使用Image-over-Text选项。

图像覆盖文本的PDF保持了文档的原始外观,但增加了选择、复制和搜索文本的能力。它们非常适合扫描包含图像和复杂格式的复杂表格、书籍或其他文档。以下是相同代码的示例,只是OCRResultFormat设置为图像覆盖文本。

function OCRToPDF() { WebTWAIN.OCRLanguage = "eng"; WebTWAIN.OCRResultFormat = 2; // 图像覆盖文本 return WebTWAIN.OCRDirectly("Demo_OCR1.png", "ImageOverText.pdf"); }

上面的图像是生成的PDF的屏幕截图,其中一些文本被选中。如您所见,文本选择是准确的,OCR结果可以像文本文档一样复制或搜索。

当然,OCR的结果也可以保存在内存中,无论是以纯文本还是PDF的形式。在这个示例中,结果保存到一个纯文本字符串中。如果OCRResultFormat没有设置为0,字符串也可以包含Base64编码的PDF结果。保存结果后,它们将使用document.write写入页面。

function OCRToString(imageIndex) { WebTWAIN.OCRLanguage = "eng"; WebTWAIN.OCRResultFormat = 0; // 文本 return WebTWAIN.OCREx(imageIndex); } var results = OCRToString(0); // UTF-8编码的OCR结果(与ascii兼容) document.write(results);
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485