将扫描文档图像转换为可搜索 PDF(使用 OCR)





0/5 (0投票)
演示了如何使用Atalasoft的DotImage GlyphReader OCR,使.NET应用程序能够将纸质文档数字化为可搜索的PDF,以便搜索引擎进行索引。
引言
从病历、税务表格、保险索赔,到旧备忘录、杂志和书籍;企业每天都在将纸质文件数字化。随着搜索引擎技术的进步,为所有这些文档提供可搜索文本显然是明智之举。常用的方法是使用OCR(光学字符识别)将图像转换为索引器已知的文档格式,但缺点是我们通常会丢失原始文档的布局、图像和颜色——此外,由于没有OCR是完美的,我们需要原始图像来修复错误。我们想要的是一种文档格式,在人类看来与原始图像一样,但在索引器看来则像纯文本。而且,当我们从图像中复制时,我们希望将文本放到剪贴板上。这就是可搜索PDF的承诺。
在可搜索PDF中,原始扫描图像被保留,因此任何人都可以阅读文档。通过OCR提取的文本内容被放置在图像后面,以便搜索索引器可以看到它,并且Acrobat Reader允许我们将其选择为文本。桌面和企业搜索的普及、OCR准确性的不断提高以及PDF的大规模采用,是使可搜索PDF成为数字化纸质文档理想格式的强大组合。
本文将演示如何轻松开发一个应用程序,该应用程序可以从扫描文档生成这些可搜索的PDF,以便Google、Sharepoint、Microsoft桌面搜索以及其他索引PDF文档的应用程序进行索引。
为了帮助构建此应用程序,Atalasoft提供了一个OCR框架,该框架简化了与行业领先的OCR引擎以及我们自己的高精度引擎GlyphReader的协作。可以通过atalasoft.com下载Atalasoft DotImage Document Imaging SDK的免费30天试用版,包括OCR模块、GlyphReader以及所有其他附加组件。
使用我们的框架,这些步骤将为您处理:
- 解压缩图像
- 预处理图像以提高OCR准确性(包括清理或纠偏)
- OCR图像以提取文本。
- 以多种格式重新编码图像,包括CCIT Group 4、JBIG2、JPEG或JPEG2000,以获得绝对最小的文件大小。
- 构建一个包含图像和提取文本的PDF,其中每个单词都准确地放置在图像的相应位置下方。
Atalasoft的OCR框架包含一个灵活的Translator接口,用于生成识别过程的输出。例如,TextTranslator开箱即用,并生成文本流。Searchable PDF Module包含PdfTranslator,用于生成纯文本PDF或带隐藏文本的图像PDF。两者都是“可搜索的”,但后者包含原始图像,也是我们将要使用的。
本文将使用以下两页的彩色TIFF作为OCR源文档。此处显示的是原始扫描TIFF的较低分辨率图像(这是Atalasoft最近的一篇白皮书,已打印并彩色扫描)。
将文本提取到文本文件中
让我们从一个简单地将文本提取到文件中的方法开始。首先,我们必须创建一个ImageSource
对象,以有效地处理多页图像文件。然后,我们创建OCR引擎,初始化它,将其翻译为所需的MIME类型,然后关闭引擎。
void MakeText(string inFile, string outFile)
{
using (FileSystemImageSource fis =
new FileSystemImageSource(new string[1] { inFile }, true))
{
GlyphReaderEngine ocr = new GlyphReaderEngine();
ocr.Initialize();
ocr.Translate(fis, "text/plain", outFile);
ocr.ShutDown();
}
}
生成的文本文件显然与原始文档完全不像,但它确实包含了文本。它也没有存储在与图像相同的文件中。我们可以做得更好。
创建可搜索的PDF
对于下一个代码示例,我们将使用PdfTranslator创建可搜索的PDF。为此,我们需要:
- 创建PdfTranslator的实例
- 将其OutputType设置为TextUnderImage(创建可搜索PDF)
- 将其添加到OcrEngine的Translators集合中(因为它是附加组件,所以未预先注册)
- 使用引擎进行翻译,并将输出MIME类型设置为“application/pdf”
这是代码
void MakePdf(string inFile, string outFile)
{
using (FileSystemImageSource fis =
new FileSystemImageSource(new string[1] { inFile }, true))
{
GlyphReaderEngine ocr = new GlyphReaderEngine();
PdfTranslator pdfTrans = new PdfTranslator();
pdfTrans.OutputType = PdfTranslatorOutputType.TextUnderImage;
ocr.Translators.Add(pdfTrans);
ocr.Initialize();
ocr.Translate(fis, "application/pdf", outFile);
ocr.ShutDown();
}
}
结果是一个高质量的可搜索PDF!当在Acrobat Reader中打开PDF时(请参阅下面的截图),文档中的所有文本都可以作为真实文本进行选择,尽管此PDF的可视部分是实际的彩色栅格化图像。
OCR引擎和PDF Translator处理了所有必要的细节,包括纠偏图像、存储图像、生成准确的OCR、压缩图像、将识别出的文本准确地放置在图像的正确位置下方,以及生成PDF文档。
仅仅在文件系统上拥有此文件,Google Desktop Search或Windows Desktop Search就会正确地索引该文档,并且该文档看起来与原始文档完全相同。
产品要求
要将可搜索PDF生成添加到您的应用程序中,您将需要Atalasoft的以下产品:
- DotImage Document Imaging SDK
- OCR GlyphReader Engine Module(运行时需要额外付费)
- OCR Searchable PDF Module(包含20个运行时)
所有这些都包含在DotImage SDK中,您可以下载并免费评估30天。请务必申请所需产品的评估许可证。本文附加了生成的PDF和C# 2.0源代码,这是一个简单的控制台应用程序,其中第一个参数是输入图像文件,第二个参数是生成的搜索PDF文件。
Archives(归档)
- 简化 TIFF 编辑
- 使用自定义序列化器构建 Visual Studio 调试器可视化工具
- ThinDoc:零占用空间,全屏 PDF 查看器
- 从图像生成网站配色方案
- 将扫描文档图像转换为可搜索 PDF(使用 OCR)
- 案例研究:使用 AJAX 将 WinForms 控件引入 Web
- “嘿!那是我的车吗?如何使用 DotImage 锐化 QuickBird 卫星图像”
- 使用 DotImage 将文档扫描到云端
- 使用 DotImage 进行光学标记识别
- 使用 Atalasoft 的 DotTwain SDK 轻松实现 ActiveX Twain 扫描
- TIFF和PDF:有什么区别以及如何相互转换
- 识别 PDF 和 TIFF 文档中的条形码