使用docsplit gem,我可以从 PDF 或任何其他文件类型中提取文本。例如,使用以下行:
Docsplit.extract_pages('doc.pdf')
我可以拥有 PDF 文件的文本内容。
我目前正在使用 Rails,PDF 通过请求发送并存在于内存中。查看 API 和源代码,我找不到从内存中提取文本的方法,只能从文件中提取。
有没有办法让这个 PDF 的文本避免创建临时文件?
如果有关系,我正在使用 attachment_fu
。
使用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-like 对象。在 StringIO 中,无论内容是真文本还是二进制,都一样。
看看其中之一:
新的(字符串=“”[,模式]) 使用字符串和模式创建新的 StringIO 实例。 open(string=""[, mode]) {|strio| ...} 等价于 ::new,除了当它被一个块调用时,它产生新实例并关闭它,并返回从块返回的结果。