在编写PDF转图片的代码时遇到问题
我的需求是:上传一份文件。然后有一个判断,如果是图片则做一系列处理然后给AI能力,如果是PDF则先转化成图片再做以上步骤。
现在的问题是,我在网上搜索的教程都是只能转化本地保存的PDF,这种传输过来的要怎么处理呢?
AI支持什么格式的图片数据?支持2进制数据可以用pypdfium2将pdf每页内容处理成2进制数据后传递给AI。
from flask import Flask, request,render_template
import pypdfium2 as pdfium
import io
app = Flask(__name__)
@app.route("/upload", methods=["POST"])
def save_file():
file = request.files['file']
bindata=file.read()#文件2进制数据
suffix=file.filename.lower().split('.')[-1]
returnValue=""##图片识别后返回给客户端的内容
if suffix=="pdf":#pdf文件处理
pdf=pdfium.PdfDocument(bindata)
n_pages=len(pdf)#页数
for i in range(n_pages):
page=pdf[i]
bitmap=page.render(scale = 300/72)#300dpi,更大尺寸改这里
pil_image = bitmap.to_pil()#PIL.Image.Image
output = io.BytesIO()
pil_image.save(output, format='JPEG')
bindata=output.getvalue()##图片2进制
#将2进制传递给AI处理后赋值给returnValue
elif suffix in['jpg','jpeg','gif','png']:
#将2进制传递给AI处理后赋值给returnValue
pass##图片处理
return returnValue#返回给客户端
@app.route("/", methods=["GET"])
def index():
return render_template("index.html")
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000, debug=True)
参考一下
from flask import Flask, request, render_template
from pdf2image import convert_from_bytes
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
# 将上传的PDF文件转换为PIL Image对象
pages = convert_from_bytes(file.read())
# 保存每一页为图片文件
for i, page in enumerate(pages):
page.save(f'page_{i}.jpg')
return '文件上传成功!'
return render_template('upload.html')
if __name__ == '__main__':
app.run()
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!