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

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

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2006年12月1日

CPOL

5分钟阅读

viewsIcon

169069

downloadIcon

4693

演示了如何使用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以及所有其他附加组件。

使用我们的框架,这些步骤将为您处理:

  1. 解压缩图像
  2. 预处理图像以提高OCR准确性(包括清理或纠偏)
  3. OCR图像以提取文本。
  4. 以多种格式重新编码图像,包括CCIT Group 4、JBIG2、JPEG或JPEG2000,以获得绝对最小的文件大小。
  5. 构建一个包含图像和提取文本的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。为此,我们需要:

  1. 创建PdfTranslator的实例
  2. 将其OutputType设置为TextUnderImage(创建可搜索PDF)
  3. 将其添加到OcrEngine的Translators集合中(因为它是附加组件,所以未预先注册)
  4. 使用引擎进行翻译,并将输出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(归档)

© . All rights reserved.