首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要使用Tesseract API实现批量PDF提取

需要使用Tesseract API实现批量PDF提取
EN

Stack Overflow用户
提问于 2017-06-17 07:52:16
回答 1查看 433关注 0票数 0

我有大量的PDF文档,我需要从中提取文本。用于进一步处理的提取文本。我以线性的方式使用Tesseract API对一小部分文档进行了这一操作,并获得了所需的输出。然而,当我有大量的文件时,这需要很长时间。

我尝试使用Hadoop环境处理功能(Map)和存储(HDFS)来解决这个问题。然而,我面临着将Tesseract API实现到Hadoop (Map)方法中的问题。当Teserract将这些文件转换为中间图像文件时,我对在HDFS中如何处理Tesseract-API-进程的中间结果图像文件感到困惑。

我已经搜索过,但没有成功地尝试了几个选项,比如:

  1. 我通过使用Hadoop Reduce将FileInputFormat类扩展到我自己的PdfInputFormat类来从pdf中提取文本,为此我使用Apache PDFBox从PDF中提取文本,但是当涉及到包含图像的扫描-pdf时,这个解决方案并没有给我所需的结果。
  2. 在相同的主题上,我发现了很少的答案,说明使用-Fuse,这将有助于或者应该在本地生成图像文件,而不是将这些文件上传到hdfs中进行进一步处理。不确定这是否是正确的方法。

想知道解决这个问题的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-07 12:01:30

这是一种处理多个pdf的方法,使用Hadoop框架的强大功能提取文本,然后使用该文本进行进一步处理:

  1. 将所有PDF文件转换为一个文件夹中的文本。
  2. 每个pdf创建一个文本文件,以包含到pdf的路径。例如,如果我有10个pdfs要转换,那么我生成了10个文本文件,每个文本文件都包含到各自pdf的唯一路径。
  3. 这些文本文件是在map- given程序中作为输入提供的。
  4. 由于输入文件的大小非常小,框架只为一个输入生成一个输入拆分。例如,如果我有10个pdfs作为输入,那么框架将生成10个输入拆分。
  5. 从每个输入拆分中,记录读取器读取一行(记录),并作为值传递给一个映射器。因此,如果输入文本文件中有10条记录(line==File路径),则10次映射器将运行。由于我有一个记录,每个输入分割,所以一个映射器-还原器被指派为该输入分割的任务。
  6. 因为我有10个输入-分割的10个映射器将运行,并行。
  7. 在Mapper鬼脚本中生成图像,从Mapper值属性传递文件名。图像被转换成文本,在地图本身内使用Tesseract获取每个pdf的文本。这是输出。
  8. 这是传递给减速机做其他分析工作的要求。

这是目前的解决办法。希望对此有反馈意见。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44602145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档