使用docsplit从内存中的文档中提取文本



使用docsplit gem我可以从PDF或任何其他文件类型中提取文本。例如,使用以下行:

 Docsplit.extract_pages('doc.pdf')

我可以有一个PDF文件的文本内容。

我目前正在使用Rails, PDF通过请求发送并存在于内存中。在API和源代码中,我找不到从内存中提取文本的方法,只能从文件中提取文本。

是否有一种方法来获得这个PDF的文本,避免创建一个临时文件?

我用attachment_fu,如果它重要。

使用临时目录

require 'docsplit'
def pdf_to_text(pdf_filename)
  Docsplit.extract_text([pdf_filename], ocr: false, output: Dir.tmpdir)
  txt_file = File.basename(pdf_filename, File.extname(pdf_filename)) + '.txt'
  txt_filename = Dir.tmpdir + '/' + txt_file
  extracted_text = File.read(txt_filename)
  File.delete(txt_filename)
  extracted_text
end
pdf_to_text('doc.pdf')

如果内容是字符串,使用StringIO创建一个IO可以读取的类file对象。在StringIO中,无论内容是真文本还是二进制,都是一样的。

看任意一个:

<>之前新(string = " "[,模式])用string和mode创建新的StringIO实例。Open (string="[, mode]) {|strio|…}等价于::new,不同之处在于当它被用块调用时,它产生新的实例并关闭它,并返回从块返回的结果。

相关内容

  • 没有找到相关文章

最新更新