Ruby on rails 使用docsplit从内存中的文档中提取文本
使用gem,我可以从PDF或任何其他文件类型中提取文本。例如,使用以下行:Ruby on rails 使用docsplit从内存中的文档中提取文本,ruby-on-rails,ruby,attachment-fu,docsplit,Ruby On Rails,Ruby,Attachment Fu,Docsplit,使用gem,我可以从PDF或任何其他文件类型中提取文本。例如,使用以下行: Docsplit.extract_pages('doc.pdf') 我可以拥有PDF文件的文本内容 我目前正在使用Rails,PDF通过请求发送并保存在内存中。查看API和源代码,我找不到从内存中提取文本的方法,只能从文件中提取 是否有一种方法可以获取此PDF的文本,从而避免创建临时文件 我正在使用attachment\u fu如果有关系。如果内容是字符串,请使用创建一个类似文件的对象,IO可以读取。在StringI
Docsplit.extract_pages('doc.pdf')
我可以拥有PDF文件的文本内容
我目前正在使用Rails,PDF通过请求发送并保存在内存中。查看API和源代码,我找不到从内存中提取文本的方法,只能从文件中提取
是否有一种方法可以获取此PDF的文本,从而避免创建临时文件
我正在使用
attachment\u fu
如果有关系。如果内容是字符串,请使用创建一个类似文件的对象,IO可以读取。在StringIO中,无论内容是真文本还是二进制,都是一样的
请看以下任一项:
new(string=""[, mode])
Creates new StringIO instance from with string and mode.
open(string=""[, mode]) {|strio| ...}
Equivalent to ::new except that when it is called with a block, it yields with the new instance and closes it, and returns the result which returned from the block.
新建(字符串=”“[,模式])
使用字符串和模式从创建新的StringIO实例。
打开(字符串=”[,模式]{strio}
与::new等效,不同的是,当使用块调用它时,它将使用新实例生成并关闭它,然后返回从块返回的结果。
使用临时目录:
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')
其实这不是我想要的。Docspit需要一个文件路径作为输入,我不能从stringio获得它。输出也是一样。如果需要文件路径,则必须将其写入磁盘。Tempfile可以工作,或者是一个普通的
文件。写入,然后是文件。删除。