2012-05-31 21 views
4

我在寻找的是一个C#解决方案,用于将商业应用程序中的PDF文档数据导入到我们的数据库中。我们的客户将希望导入任何文档。通常我会把它写成完全不可能的,但是他们正在导入的文档将会以他们自己的布局布局。C#解决方案用于渲染PDF和OCR生成的图像?

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

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

要求:

  • 是纯C#或有支持的C#包装到本地DLL。
  • 不支持进程 - 在这种情况下不允许基本上只创建命令行参数并启动外部可执行文件的包装。
  • 就FOSS而言,允许我们通过支付许可费来免除正常的FOSS许可要求(即公布我们的源代码)。

我们当然不介意为商业解决方案支付费用,但我们宁可不要为每个软件的单独分配付费。

我知道这是一个相当具体的需求集合 - 可能足以让一些人认为这个问题太本地化了,但我希望有人可以建议一种方法和一些对我有帮助的库,以及其他人在未来。

的东西,我已经研究过的PDF方:

  • iTextSharp的 - 文件是一本书,你必须购买,而不是一个良好的开端。似乎没有太多有用的文档将PDF转换为公有领域的图像。许可证是不透明的,看起来我们必须为每个分配给我们的客户付费。
  • Docotic.Pdf - 仅供参考,对我们无用。
  • pdftohtml - 再次,不会产生图像。对于C#端口来说也是一团糟。
  • PdfFileParser - 仍然不是我们所需要的。
  • GhostScript - 几乎完全是我们想要的,但需要分支到一个程序。

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

+0

使用PDF IFilter,您可以读取PDF数据并将其放入数据库中。示例Foxit提供了一个IFilter组件来阅读PDF文档。 – robertpnl

+0

'iTextSharp'许可证是Affero GNU Public License。 – Oded

+0

@ Robert-PaulHoving这不是一个真正包含文本的PDF解决方案吗?这些PDF可能只是一个巨大的扫描图像的包装。我还需要能够抓住特定位置的东西(像素偏移) - IFilter是否支持这一点? – Polynomial

回答

0

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

该库可以提取文本块,单词甚至单个字符及其边界矩形。请查看extraction of words from PDFs的样本。

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

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

+0

我没有意识到Docotic.Pdf有这个功能。现在调查。如果它运作良好,你可能已经让自己成为一种销售! :) – Polynomial

+0

我玩过它,结果看起来很有希望。但是,绘制页面时创建的输出图像分辨率较差,几乎不可读。这是一个已知的问题,还是我做错了什么? – Polynomial

+0

忽略以前,我只需要放大! – Polynomial

2

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

1号方案:
如果你的PDF文件被明确定义(没有缺少的字体信息等),你可以直接通过该方法GetObjectsInRectangle指定的矩形区域中提取从PDF文本。您还应该使用选项acGetRectObjectsOptimize

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

第二个场景:
如果有涉及到的图像,还包含文本,使整个页面到一个图像,然后应用OCR可能是一个更好的选择。您可以通过使用方法ExportToTiffExportToJPegRasterizePageRange与Amyuni PDF Creator .Net进行此操作。

从文档:

IacDocument.RasterizePageRange方法
的RasterizePageRange方法页面内容转换成彩色或灰度图像。当 归档文档或执行OCR时,有时最好将所有页面存储为图像而不是复杂文本和图形 操作。

然后你可以使用我们的OCR add-in与正方体OCR整合,最后我们再次陷入一号方案(GetObjectsInRectangle)。为了将OCR应用于文件,您可以使用方法OCRPageRange

无效OCRPageRange(INT起始页,诠释尾页,String语言, acOCROptions选项)

关于授权许可,Amyuni PDF造物主的.Net提供了一个(每个应用程序)免版税许可协议。

平时免责声明适用

相关问题