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

Django DRF接收Base64图片调用AWS Textract报类型错误如何解决

问题原因

报错是因为你从序列化器validated_data中取出的image是Django的SimpleUploadedFile类型实例,不是AWS Textract接口要求的bytes类型对象,无需生成物理文件,直接读取该文件对象的内容即可得到字节流。

修复方案

仅需修改你代码中img_bytes的赋值逻辑,调用SimpleUploadedFile的read()方法读取内容:

import boto3

class ocrRequestSerializer(serializers.ModelSerializer):
    image = Base64ImageField(required=False)

    class Meta:
        model = ocrRequest
        fields = '__all__'

    def create(self, validated_data):
        image=validated_data.pop('image')
        ocr_request = ocrRequest.objects.create()
        # 直接读取文件对象内容得到bytes,无需落盘存储
        img_bytes = image.read()

        textractmodule = boto3.client('textract')
        response = textractmodule.analyze_document(Document={'Bytes': img_bytes}, FeatureTypes=["FORMS"])
        doc = Document(response)
        # 后续你的业务逻辑
        return ocr_request

补充说明

如果后续你还需要复用这个image对象做其他操作,读完之后可以调用image.seek(0)重置文件指针到开头,避免后续读取内容为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:36:03