随着数字化转型的不断推进,企业每天都要处理大量的纸质文档,如健康记录、税务表格、保险索赔、旧备忘录、杂志和书籍等。为了更好地利用这些文档,需要将它们转换为可搜索的文本格式。传统的OCR(光学字符识别)技术可以将图像转换为文档格式,但这种方法的缺点是会丢失原始文档的布局、图像和颜色,而且OCR的准确性并不完美,因此需要保留原始图像以便于修正错误。希望得到的是一种文档格式,它在人类看来与原始图像相似,但在索引器看来却像是纯文本。此外,当从图像中复制文本时,希望文本能够被复制到剪贴板上。这就是可搜索PDF的承诺。
在可搜索的PDF中,保留了原始扫描图像,以便任何人都可以阅读文档。通过OCR提取的文本内容被放置在图像后面,这样搜索引擎就可以看到它,而Acrobat Reader则允许将其作为文本选择。桌面和企业搜索的普及、OCR准确性的不断提高以及PDF的广泛采用,使得可搜索PDF成为存储数字化纸质文档的理想格式。
本文将展示如何简单地开发一个应用程序,该程序可以从扫描文档生成可被Google、Sharepoint、Microsoft桌面搜索等应用程序索引的可搜索PDF。为了帮助构建这个应用程序,Atalasoft发布了一个OCR框架,简化了与行业领先的OCR引擎以及自己的高精度引擎GlyphReader的协作。可以从atalasoft.com下载Atalasoft DotImage文档成像SDK的免费30天评估版,包括OCR模块、GlyphReader以及所有其他插件。
使用框架,以下步骤将为处理:
Atalasoft的OCR框架包括一个灵活的Translator接口,用于从识别过程中生成输出。例如,TextTranslator是现成的,可以生成文本流。可搜索PDF模块包括PdfTranslator,用于生成仅文本PDF或带有隐藏文本的图像PDF。两者都是“可搜索的”,但后者包括原始图像,这正是将要使用的。
本文将使用以下2页彩色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();
}
}
生成的文本文件显然与原始文档完全不同,但它确实包含了文本。它也没有存储在与图像相同的文件中。可以做得更好。
在下一个代码示例中,将使用PdfTranslator创建一个可搜索的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转换器处理了所有必要的细节,以校正图像、存储它、生成准确的OCR、压缩图像、准确地将识别的文本放置在图像的正确部分,并生成PDF文档。
简单地将此文件放在文件系统中,将导致Google桌面搜索或Windows桌面搜索正确索引此文档,文档看起来与原始文档完全相同。
要将可搜索PDF生成添加到应用程序中,将需要以下来自Atalasoft的产品: