2010-10-27 30 views
4

我的问题:添加重复(隐藏)文本层到PDF额外的搜索

我有很多复杂的变音符号(例如,S,S,R,ǎ等罗马字体的PDF )。为了更容易在pdf中搜索,我想添加一个额外的图层,就像在hocr中做的一样,其中同样的文本没有变音符号。

当使用全文搜索引擎时,我可以在同一位置(矢量)对多个词汇进行索引 - 我希望在这里获得相同的效果。

我已经阅读了大量有关将HOCR层扫描的图像,但我真的只是想复制文字图层,通过它通过剥离变音符号(够直白)的脚本,然后将其重新作为隐藏但可搜索图层。

任何人有任何建议吗? (涉及到任何平台,语言,库或工具链的解决方案将是有益的!)

谢谢:)

编辑:请让我知道如果这个问题还不清楚。

回答

6

嗯,我有一个(稍微丑陋和黑客)的解决方案,所以我想我会分享它。

我使用PDFMiner来提取文本以及坐标。然后,我使用ReportLab将文本的标准化版本写入到与隐藏文本完全相同的新pdf中。为了使位置正确排列,我发现我必须使用完全相同的字体,所以我使用了FontForgeMuPDF的组合以从原始pdf中提取所需的字体。

最后,创建了新的pdf后,我使用pdftk将其与原始合并。

它工作得很好,但它的不足之处在于,复制文本的PDF结果导致规范化文本也被复制。但是对于我目前的目的来说,这是可以接受的,我看不到任何方式。 pdf规格。并不能真正支持我的目标,所以我不认为我能做得比这个黑客解决方案更好。

+1

虽然你的回答是来自一段时间,但如果你可以发布你的脚本或链接到它,那将是非常好的。 – Mark 2014-06-27 21:08:51

1

我写了类似的东西,通过OCR'ing图像添加可搜索文本并将其转换为C#中的PDF。我使用www.quickpdf.com的QuickPDF在图像顶部创建隐藏的白色文本对象,并且工作得很好。

在你的情况下,QuickPDF将允许你提取文本字符串以及边界框和字体细节。然后,您可以规范化文本并使用现有的字体和位置信息创建不可见的文本对象,然后将其保存到新文件中。

这基本上可以为您提供与现在相同的PDF,并且还可以为您提供原始文本和标准文本。

QuickPDF是一个商业图书馆。如果你的解决方案适合你的话,那么没有用过购买商业引擎。不过,好的一点是它只需要一个SDK,如果你有一些PDF需要转换的话,你会看它。

+0

感谢您的回答 - 是的,我的解决方案有点复杂,但我把它全部包装在一个Python脚本中,它完全免费的开源软件,这很好。它有PDFMiner,ReportLab,FontForge和pdftk的外部依赖关系,但这并不算太坏。另外,我对Python很满意,而C#因为各种原因并没有吸引太多。 – simon 2010-11-26 04:07:49

+0

'QP.SetTextMode(3);'是quickPDF中的不可见文本。 – Amicable 2013-06-19 08:11:10