使用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,不同之处在于当它被用块调用时,它产生新的实例并关闭它,并返回从块返回的结果。