65.9K
CodeProject 正在变化。 阅读更多。
Home

如何通过 Web 浏览器使用 OCR 技术

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2012年8月9日

CPOL

6分钟阅读

viewsIcon

46594

downloadIcon

1522

本文将向您展示如何通过Web浏览器将扫描的图像转换为可搜索的文本和PDF文件。

引言

Dynamsoft的Dynamic Web TWAIN SDK是一个强大的基于Web的图像处理解决方案,它使开发人员能够忽略底层细节,专注于重要的事情。2012年7月,Dynamic Web TWAIN 8.0发布,为API添加了新的尖端技术。添加了两个强大的新附加组件,支持OCR(光学字符识别)和条形码识别。本文将重点介绍OCR附加组件,该组件使开发人员无需担心底层实现即可利用此技术,同时保持灵活性。

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

下面,我们将利用Dynamsoft新推出的Dynamic Web TWAIN OCR附加组件从扫描的图像中提取文本。将演示所有三种输出模式:纯文本、纯文本PDF和图像上的文本PDF。如果您的系统尚未安装Dynamic Web TWAIN SDK,您可以轻松下载试用版,或在Dynamsoft网站上查看和使用在线演示。

Dynamic OCR支持什么

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

如何在您的应用程序中使用OCR

以下代码示例均以JavaScript提供,假设WebTWAIN对象已使用变量名WebTWAIN创建。 

了解OCR设置

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

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

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

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

OCRResultFormat:一个重要设置,决定OCR结果是保存到文本文件还是PDF文件。

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

OCRUnicodeFontName:在OCRUseDetectedFont关闭的情况下使用的备用字体。此字体也必须存在于系统中。如果未提供此字体,则库将尝试使用适合所用语言的字体。

OCRPageSetMode:对于此设置,默认值在大多数操作中都很好。这会影响OCR确定页面格式的方式,并且默认设置为自动。

在TWAIN缓冲区中的图像上进行OCR

在此示例中,我们将对加载到TWAIN中的可见图像按索引给定的英文图像执行OCR。结果将保存到一个名为OCRResults.txt的文本文件中。由于我们只进行文本输出,因此无需担心任何字体设置,并且所有其他设置(如OCRDllPathOCRTessDataPath)都使用默认值。

function DoOCR(imageIndex) {
WebTWAIN.OCRLanguage = "eng";
WebTWAIN.OCRResultFormat = 0; //Text
return WebTWAIN.OCR(imageIndex, "OCRResults.txt"); //Returns true for success, false for fail
}

对外部图像进行OCR

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

function ChineseOCR() {
WebTWAIN.OCRLanguage = "chi_sim";
WebTWAIN.OCRResultFormat = 0; //Text
WebTWAIN.OCRTessDataPath = "../../tesseract-chinese/"; //Should include final /
//Multiple files are separated by the | character
return WebTWAIN.OCRDirectly("wendang1.tif|wendang2.tif|webdang3.tif", "ChineseOCR.txt");
}

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

OCR到纯文本PDF

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

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

原始图像

纯文本PDF

正如清楚可见的,纯文本PDF完美地保留了所有文本及其定位信息。但是颜色、斜体和图像丢失了。在许多情况下,这可能是可接受的或期望的结果,但在其他情况下,图像很重要,应该改用“图像上的文本”选项。

OCR到图像上的文本PDF

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

function OCRToPDF() {
WebTWAIN.OCRLanguage = "eng";
WebTWAIN.OCRResultFormat = 2; //Image-over-text
return WebTWAIN.OCRDirectly("Demo_OCR1.png", "ImageOverText.pdf");
}

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

OCR到内存中的字符串

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

function OCRToString(imageIndex)
WebTWAIN.OCRLanguage = "eng";
WebTWAIN.OCRResultFormat = 0; //Text
return WebTWAIN.OCREx(imageIndex);
}
var results = OCRToString(0); //UTF-8 encoded OCR results (ascii compatible)
document.write(results);

下载示例

要亲自尝试上述功能,您可以访问在线演示:Dynamic Web TWAIN OCR条形码在线演示

如果您想评估包含OCR附加组件的Dynamic Web TWAIN,可以在此处下载30天免费试用版:Dynamic Web TWAIN 30天免费试用

如果您有任何问题,可以联系我们的支持团队:twainsupport@dynamsoft.com。

© . All rights reserved.