我正在寻找的是一种C#解决方案,可以将数据从PDF文档导入我们的数据库,在商业应用程序中。我们的客户将寻求导入任意文档。通常我会把它写成完全不可能,但他们导入的文件将采用他们自己的布局。
我的计划是将PDF呈现为静态图像,然后允许用户设置自己的模板,这些模板基本上使用OCR在PDF中的预定义像素偏移处拉出文本。对于表,它们定义表的位置以及列和行大小的一组其他值。然后,我们可以将模板应用于该文档类型。
所以,我真正想要的是两个库:一个用于将PDF转换为图像,另一个用于将这些图像转换为OCR。
要求:
我们当然不介意为商业解决方案付费,但我们宁愿不再为每个软件分发付费。
我知道这是一个非常具体的要求 - 也许足以让一些人认为这个问题过于本地化,但我希望有人可以建议一种方法和一些对我有帮助的图书馆,以及其他人在将来。
我正在寻找PDF方面的东西:
对于OCR方面,我可能最终会使用Tesseract,因为Apache许可证是允许的,并且它得到了很好的评论。如果有其他选择,我也会对此感兴趣。
答案 0 :(得分:2)
我想为此任务推荐Amyuni PDF Creator .Net。
第一种情景:
如果您的PDF文件定义良好(没有丢失的字体信息等),您可以通过在方法GetObjectsInRectangle
中指定矩形区域直接从PDF中提取文本。您还应该使用选项acGetRectObjectsOptimize
:
在返回文本对象之前优化它们。也就是说,结合文本 彼此接近的对象成为单个文本对象。
第二种情景:
如果涉及的图像也包含文本,将整个页面渲染为图像,然后应用OCR可能是更好的选择。您可以使用方法ExportToTiff,ExportToJPeg或RasterizePageRange与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组样本。
免责声明:我是该图书馆的开发人员之一。