我的问题:
我有一个带有许多带有复杂变音符号的罗马字符的pdf(例如,ṣ,ś,ṝ,ǎ等)。为了更容易在pdf中搜索,我想添加一个额外的层,就像使用hocr一样,其中相同的文本没有变音符号。
当使用全文搜索引擎时,我可以在同一位置(向量)索引多个术语 - 我想在这里达到相同的效果。
我已经阅读了很多关于向扫描图像添加特定图层的内容,但我真的只想复制文本图层,将其传递给删除变音符号的脚本(直截了当),然后将其作为隐藏文件添加回来。可搜索层。
有人有什么建议吗? (涉及任何平台,语言,库或工具链的解决方案将非常有用!)
谢谢:)
编辑:如果问题不清楚,请告诉我。
答案 0 :(得分:6)
我有一个(稍微丑陋和hackish)的解决方案,所以我想我会分享它。
我正在使用PDFMiner提取文本以及坐标。然后我使用ReportLab将文本的规范化版本写入新的pdf,与隐藏文本完全相同。为了使位置正确排列,我发现我必须使用完全相同的字体,所以我使用FontForge和MuPDF的组合从原始pdf中提取所需的字体
最后,创建了新的pdf后,我正在使用pdftk将其与原始文件合并。
它运作良好,但有一个缺点,即从pdf中复制文本会导致复制的规范化文本。但这对我目前的目的来说是可以接受的,我无法看到任何解决方法。 pdf规范并不真正支持我的目标,所以我不认为我能做得比这个hackish解决方案更好。
答案 1 :(得分:1)
我写了类似的东西,通过OCR图像添加可搜索的文本,并在C#中将其转换为PDF。我使用www.quickpdf.com上的QuickPDF在图像顶部创建隐藏的白色文本对象,这种方法运行得相当好。
在您的情况下,QuickPDF允许您提取文本字符串以及边界框和字体详细信息。然后,您可以使用现有的字体和位置信息规范化文本并创建不可见的文本对象,然后将其保存到新文件中。
这基本上会为您提供与现在相同的PDF,并且还会为您提供原始文本和规范化文本。
QuickPDF是一个商业图书馆。如果你的解决方案适合你,那么就没有用过购买商用引擎了。不错的是,它只需要1个SDK,如果你有一个以上的PDF要转换,你会看看它。