我正在尝试使用图像解析器Donut Model从图像中提取文本。输入图像的格式似乎不正确。
我收到一条错误消息:
RuntimeError: Input type (float) and bias type (c10::BFloat16)
应该是一样的
在这条线上:
output = model.inference(image=image, prompt="<s_cord-v2>")
这是我的整个代码:
from donut import DonutModel
from PIL import Image
import torch
model = DonutModel.from_pretrained("naver-clova-ix/donut-base-
finetuned-cord-v2")
if torch.cuda.is_available():
model.half()
device = torch.device("cuda")
model.to(device)
else:
model.encoder.to(torch.bfloat16) model.eval()
image = Image.open("testfolder/test1.jpg").convert("RGB")
output = model.inference(image=image, prompt="<s_cord-v2>")
output
我知道图像的格式不正确,但我该如何解决这个问题?
您可以通过删除代码中的 else 子句来修复错误。我想您有一个 CPU,并且 bfloat16 对于该型号可能是错误的。这段代码对我来说效果很好:
from donut import DonutModel
from PIL import Image
import torch
model = DonutModel.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
if torch.cuda.is_available():
model.half()
device = torch.device("cuda")
model.to(device)
model.eval()
image = Image.open("./donut/misc/sample_image_cord_test_receipt_00004.png").convert("RGB")
output = model.inference(image=image, prompt="<s_cord-v2>")
output