传统的OCR工具在处理图像中的简单文本时效果很好,但当文本与视觉元素一同出现时,其表现就会变差。因此,为了提高准确性,我们可以使用对象检测模型来识别/隔离图像中的文本区域,然后再将这些文本提交给OCR工具。此外,还可以添加一层大型语言模型(LLM),以更精细的格式呈现OCR工具输出的文本。因此,整个处理流程大致如下:
但是,随着Llama 3.2视觉模型的发布,只需传入图像即可提取文本或对图像提出问题,从而简化了整个处理流程。
Llama 3.2视觉模型是一个拥有90亿参数的模型,在大多数OCR任务上表现良好。我已经使用Ollama在本地MacBook上运行了Llama 3.2视觉模型。要使用Llama 3.3视觉模型,则需要Ollama 0.40版本,该版本现已作为预发布版提供。
import ollama
image_path = '../atomichabbits.jpg' # Replace with your image path
base64_image = image_to_base64(image_path)
response = ollama.chat(
model="x/llama3.2-vision",
messages=[{
"role": "user",
"content": "The image is a book cover. Output should be in this format - <Name of the Book>: <Name of the Author>. Do not output anything else",
"images": [base64_image]
}],
)
# Extract cleaned text
cleaned_text = response['message']['content'].strip()
print(cleaned_text)
传入的图像是以下这张。
输出是
我也尝试了对另一张图像进行处理,那是一张餐厅的账单,结果相当不错。输入的图像是:
该模型甚至能够以结构化的格式输出数据。
总结来说,视觉模型的进步能够以一种简单的方式帮助自动化许多计算机视觉任务。这个领域看起来很有前景。