C#解决方案用于渲染PDF和OCR生成的图像?

时间:2012-05-31 10:38:51

标签: c# pdf ocr pdf-rendering

我正在寻找的是一种C#解决方案,可以将数据从PDF文档导入我们的数据库,在商业应用程序中。我们的客户将寻求导入任意文档。通常我会把它写成完全不可能,但他们导入的文件将采用他们自己的布局。

我的计划是将PDF呈现为静态图像,然后允许用户设置自己的模板,这些模板基本上使用OCR在PDF中的预定义像素偏移处拉出文本。对于表,它们定义表的位置以及列和行大小的一组其他值。然后,我们可以将模板应用于该文档类型。

所以,我真正想要的是两个库:一个用于将PDF转换为图像,另一个用于将这些图像转换为OCR。

要求:

  • 是纯C#还是在本机DLL上有一个受支持的C#包装器。
  • 不分叉进程 - 在这种情况下,不允许基本上只创建命令行参数和启动外部可执行文件的包装器。
  • 在FOSS的情况下,允许我们通过支付许可费来免除正常的FOSS许可证要求(即发布我们的源代码)。

我们当然不介意为商业解决方案付费,但我们宁愿不再为每个软件分发付费。

我知道这是一个非常具体的要求 - 也许足以让一些人认为这个问题过于本地化,但我希望有人可以建议一种方法和一些对我有帮助的图书馆,以及其他人在将来。

我正在寻找PDF方面的东西:

  • iTextSharp - 文档是一本你必须购买的书,不是一个好的开始。关于将PDF转换为公共领域的图像似乎没有太多有用的文档。许可是不透明的,看起来我们必须按照我们分发的客户付款。
  • Docotic.Pdf - 仅限文字,对我们没用。
  • pdftohtml - 再次,不会产生图像。移植到C#也是一团糟。
  • PdfFileParser - 仍然不是我们需要的。
  • GhostScript - 正是我们想要的,但需要分配给程序。

对于OCR方面,我可能最终会使用Tesseract,因为Apache许可证是允许的,并且它得到了很好的评论。如果有其他选择,我也会对此感兴趣。

2 个答案:

答案 0 :(得分:2)

我想为此任务推荐Amyuni PDF Creator .Net

第一种情景:
如果您的PDF文件定义良好(没有丢失的字体信息等),您可以通过在方法GetObjectsInRectangle中指定矩形区域直接从PDF中提取文本。您还应该使用选项acGetRectObjectsOptimize

  

在返回文本对象之前优化它们。也就是说,结合文本   彼此接近的对象成为单个文本对象。

第二种情景:
如果涉及的图像也包含文本,将整个页面渲染为图像,然后应用OCR可能是更好的选择。您可以使用方法ExportToTiffExportToJPegRasterizePageRange与Amyuni PDF Creator .Net一起完成此操作。

来自文档:

  

IacDocument.RasterizePageRange方法
RasterizePageRange方法将页面内容转换为彩色或灰度图像。什么时候   存档文件或执行OCR,有时候更适合   所有页面都要存储为图像而不是复杂的文本和图形   操作

然后你可以使用与Tesseract OCR集成的OCR add-in,最后我们再次进入第一个场景(GetObjectsInRectangle)。要将OCR应用于您的文件,您可以使用方法OCRPageRange

  

void OCRPageRange(int startPage,int EndPage,string Language,   acocROptions选项)

关于许可,Amyuni PDF Creator .Net提供(每个应用程序)免版税许可。

通常的免责声明适用

答案 1 :(得分:0)

我想你可能想给Docotic.Pdf另一次机会。

图书馆可以使用其边界矩形提取文本块,单词甚至单个字符。请查看extraction of words from PDFs的示例。

此外,Docotic.Pdf可以从PDF创建图像并在System.Drawing.Graphics上绘制页面。请查看Draw and print Pdf组样本。

免责声明:我是该图书馆的开发人员之一。