You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flask API中不保存文件解析PDF?pdfminer使用遇阻

解决Flask中不保存文件直接提取PDF文本的问题

你遇到的问题核心在于:Flask的request.files返回的FileStorage对象,它的name属性只是表单里的字段名(不是实际文件路径),所以直接传file.name会报文件找不到的错误。

其实pdfminer的extract_text方法支持直接传入类文件对象(只要实现了read方法就行),完全不用把文件存到服务器磁盘上。直接把上传的FileStorage对象传给它即可。

修正后的完整路由代码如下:

@app.route("/parse-data", methods=["POST"])
def file_to_resume():
    file = request.files['file']
    if not file.filename:
        return "请选择文件", 400
    
    file_ext = os.path.splitext(file.filename)[1]
    if file_ext not in app.config['UPLOAD_EXTENSIONS']:
        return "错误的文件格式", 400
    
    try:
        # 直接传入FileStorage对象,无需保存到磁盘
        data = extract_text(file)
        data_parsed = parse_file(data)
        return jsonify(data_parsed), 200
    except Exception as e:
        return f"解析文件出错: {str(e)}", 500

补充说明:

  • 如果你用的是旧版pdfminer,可能需要明确指定fileobj参数,比如extract_text(fileobj=file)
  • 你原来的临时文件代码有个小bug:os.remove(os.path.join(tmp_path)多了不必要的os.path.join,应该改成os.remove(tmp_path)

这样修改后,既不用创建临时文件夹,也不用处理文件的保存和删除,性能更优,代码也更简洁。

内容的提问来源于stack exchange,提问作者El Pandario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:02:22