如何通过 Web 浏览器使用 OCR 技术
本文将向您展示如何通过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的文本文件中。由于我们只进行文本输出,因此无需担心任何字体设置,并且所有其他设置(如OCRDllPath
和OCRTessDataPath
)都使用默认值。
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。