Mẫu OCR mới nhất của Mistral, Mistral OCR 3, có khả năng trích xuất văn bản và hình ảnh nhúng từ nhiều loại tài liệu với độ trung thực xuất sắc.
Trong bài viết này, tôi sẽ hướng dẫn bạn cách khai thác tối đa Mistral OCR 3 bằng cả AI Studio và API với Python. Chúng ta sẽ xây dựng một ứng dụng nhỏ biến ảnh chụp thực đơn thành một trang web tương tác.
OCR là viết tắt của Optical Character Recognition (Nhận dạng ký tự quang học) và nhằm chuyển đổi tài liệu thành văn bản. Ví dụ, nó có thể chuyển ảnh chụp ghi chú viết tay thành văn bản hoặc một bảng trong PDF thành bảng văn bản thực có thể tìm kiếm và chỉnh sửa.
Mistral OCR 3 là mẫu hiểu tài liệu mới nhất của Mistral AI, mang lại độ chính xác và hiệu suất hàng đầu cho tài liệu thực tế. Nó trích xuất văn bản và hình ảnh nhúng với độ trung thực cao và giữ cấu trúc qua đầu ra markdown cùng tái tạo bảng dựa trên HTML, với tùy chọn JSON có cấu trúc.
Mistral OCR 3 vượt trội hơn tất cả đối thủ trên nhiều bộ đánh giá chuẩn:
So với Mistral OCR 2, nó đạt tỷ lệ thắng tổng thể 74% trên biểu mẫu, tài liệu quét, bảng phức tạp và chữ viết tay, với cải thiện lớn trên bản quét chất lượng thấp và bố cục dày đặc.
Hãy cùng tìm hiểu cách thiết lập để dùng Mistral OCR 3 với AI Studio.
Thiết lập tài khoản
Mistral OCR 3 có sẵn trên AI studio của họ. Đây là cách dễ nhất để thử vì có giao diện thân thiện.
Khi đăng ký, trước tiên chúng ta được yêu cầu tạo một tổ chức:
Ban đầu, Mistral OCR 3 sẽ bị khóa và chúng ta cần chọn gói để mở khóa:
Có thể chọn gói miễn phí, cho phép dùng Mistral OCR 3 với điều kiện họ được phép thu thập dữ liệu sử dụng để cải thiện dịch vụ. Hoặc chúng ta có thể nhập thông tin thẻ và trả phí theo mức sử dụng.
Không có phí thuê bao, nhưng phí là $2 hoặc $1 cho mỗi 1.000 trang, tùy thuộc vào việc có dùng yêu cầu theo lô hay không.
Phân tích tài liệu đầu tiên
Sau khi thiết lập tài khoản, chúng ta có thể thử nghiệm Mistral OCR 3 bằng cách vào thẻ "Document AI" trên AI Studio.
Để bắt đầu, chúng ta tải lên tài liệu hoặc hình ảnh muốn thực hiện OCR. Trường hợp của tôi, tôi viết vài dòng và một bảng trên giấy rồi tải lên. Chữ viết tay của tôi khá xấu, nên tôi tò mò liệu Mistral OCR 3 có hiểu được không.
Khi chọn tệp, chúng ta sẽ thấy các tùy chọn về cách xử lý tệp. Ở ví dụ đầu tiên này, tôi giữ nguyên mặc định và chỉ nhấp nút "Run" ở góc trên bên phải.
Đây là kết quả:
Kết quả khá tốt, nhưng chưa hoàn hảo:
Câu đầu có hai lỗi: "homd" thay vì "hand" và "tarnible" thay vì "terrible."
Bảng nhìn chung ổn, nhưng không nhận đúng tên cột. Tên bảng "OCR Benchmark Multilingual Chinese" và cột "Result" bị gộp lại.
Tôi ấn tượng với cách nó xử lý các lỗi tôi gạch bỏ thủ công. Tuy nhiên, nếu dùng để phân tích ghi chú, tôi muốn những phần đó được nhận diện và loại trừ.
Cuối cùng, tôi viết một câu bằng tiếng Hoa phồn thể, và nó nhận diện được phần lớn. Có ký tự "好" bị tách thành hai ký tự "女" và "子", dấu phẩy bị nhận thành chữ "g", và cuối câu cũng có một lỗi.
Khám phá tùy chọn phân tích
Một tính năng hay của Mistral OCR 3 là khả năng chỉ định cấu trúc JSON để phân tích dữ liệu. Điều này đặc biệt hữu ích khi phân tích bảng, cho phép chúng ta chỉ định tên cột và kiểu dữ liệu để nhận được các hàng dưới dạng từ điển JSON.
Hãy thử phân tích lại bảng ở ví dụ trước bằng cách chỉ định một JSON schema.
Để cung cấp JSON schema, chúng ta cần chọn JSON schema thay vì chế độ văn bản trước khi chạy OCR.
Sau đó, chúng ta cung cấp schema bằng mã hoặc qua giao diện "Visual Builder". Tôi khuyến nghị cách thứ hai vì đơn giản hơn khi đang dùng mẫu thủ công.
Khi thêm một trường, chúng ta chỉ định:
Tên
Mô tả
Kiểu dữ liệu
Trường đó có bắt buộc hay không
Trong trường hợp này, tôi chỉ định hai trường, một cho tên mẫu và một cho kết quả benchmark:
Giờ chúng ta có thể nhấp "Run" và xem kết quả. Đáng tiếc, ví dụ này không thành công. Trong kết quả, thứ duy nhất được trả về là schema tôi cung cấp, chứ không phải dữ liệu thực tế.
Tôi nghĩ có thể mình đã dùng sai, nên để chắc chắn, tôi chụp màn hình một bảng mẫu từ Wikipedia) và thử lại.
Tôi chỉ định bốn cột, để cột cuối tùy chọn:
Lần này thì hoạt động tốt. Có vẻ khi phân tích thất bại, kết quả JSON chỉ là schema đã cung cấp. Điều này cũng có nghĩa Mistral OCR 3 đã không phân tích được bảng viết tay của tôi thành JSON mặc dù có thể hiển thị nó dưới dạng văn bản.
Sử dụng Mistral OCR 3 với Python
Trong phần này, chúng ta sẽ tìm hiểu cách dùng Python để tương tác với API Mistral OCR 3. Cách này linh hoạt hơn nhiều, vì chúng ta có thể, chẳng hạn, kết hợp đầu ra với các mẫu AI khác để xử lý dữ liệu đã trích xuất.
Khi tải tệp lên AI Studio, có nút "Code" bên cạnh nút "Run". Nhấp vào đó, chúng ta sẽ thấy đoạn mã cần thiết nếu thực hiện thao tác này qua API.
Đây là một ví dụ:
Tuy nhiên, mã Python được cung cấp không hoàn toàn chính xác. Ví dụ, nó định nghĩa hàm encode_file nhưng lại gọi hàm encode. Đây là những điểm chưa khớp nhỏ, nhưng khiến mã không chạy được ngay lập tức.
Đừng lo, chúng ta sẽ giải thích chi tiết cách dùng API. Để tìm hiểu thêm về API, chúng tôi khuyến nghị xem tài liệu chính thức.
Thiết lập API
Việc đầu tiên cần làm là tạo khóa API trong thẻ "API Keys" và sao chép khóa đó vào tệp mới tên .env đặt cùng thư mục với script Python.
Dưới đây là script Python tải một ảnh JPEG cục bộ, thực hiện OCR và lưu kết quả vào tệp markdown:
import sys
import base64
import os
from mistralai import Mistral
from dotenv import load_dotenv
# Load the API key from the .env file
load_dotenv()# Initialize the Mistral client
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)# Load a file as base 64defencode_file(file_path):withopen(file_path,"rb")as pdf_file:return base64.b64encode(pdf_file.read()).decode('utf-8')# Perform OCR on and imagedefprocess_image_ocr(file_path):
base64_file = encode_file(file_path)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={"type":"image_url","image_url":f"data:image/jpeg;base64,{base64_file}"},
include_image_base64=True)for index, page inenumerate(ocr_response.pages):withopen(f"page{index}.md","wt")as f:
f.write(page.markdown)if __name__ =="__main__":# Load the input file from the arguments
file_path = sys.argv[1]
process_image_ocr(file_path)Được hỗ trợ bởi
Thực hiện OCR trên PDF
Khi đầu vào là PDF thay vì ảnh, điều duy nhất thay đổi là giá trị trong trường document. Với ảnh JPEG, chúng ta dùng:
document={"type":"image_url","image_url":f"data:image/jpeg;base64,{base64_file}"},Được hỗ trợ bởi
Với PDF, chúng ta dùng:
document={
"type": "document_url",
"document_url": f"data:application/pdf;base64,{base64_file}"
},Được hỗ trợ bởi
Việc có hai hàm riêng để xử lý PDF và JPEG hơi bất tiện và cũng không phải thực hành tốt, vì có nhiều mã dùng chung.
Để tránh điều này, chúng tôi viết một hàm mới, cải tiến dùng gói mimetypes để nhận diện loại tệp được cung cấp và xây dựng yêu cầu API tương ứng. Chúng tôi cũng cập nhật mã để lưu lại các hình ảnh được nhận diện trong tài liệu.
Đây là phiên bản cuối:
import sys
import os
import base64
import mimetypes
import datauri
from mistralai import Mistral
from dotenv import load_dotenv
# Load the API key from the .env file
load_dotenv()# Initialize the Mistral client
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])# List the supported image types
SUPPORTED_IMAGE_TYPES ={"image/jpeg","image/png","image/webp","image/tiff",}
PDF_MIME ="application/pdf"# Load a file as base 64defencode_file(file_path:str)->str:withopen(file_path,"rb")as f:return base64.b64encode(f.read()).decode("utf-8")# Build the document payload depending on the type of data contained in the filedefbuild_document_payload(file_path:str)->dict:
mime_type, _ = mimetypes.guess_type(file_path)ifnot mime_type:raise ValueError(f"Could not determine MIME type for {file_path}")
base64_file = encode_file(file_path)if mime_type == PDF_MIME:return{"type":"document_url","document_url":f"data:{mime_type};base64,{base64_file}",}if mime_type in SUPPORTED_IMAGE_TYPES:return{"type":"image_url","image_url":f"data:{mime_type};base64,{base64_file}",}raise ValueError(f"Unsupported file type: {mime_type}")# Generic function to process OCR on a filedefprocess_ocr(file_path:str, output_filename:str="output.md"):
document = build_document_payload(file_path)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document=document,
include_image_base64=True,)
process_pages(ocr_response, output_filename)# Save an image to a local filedefsave_image(image):
parsed = datauri.parse(image.image_base64)withopen(image.id,"wb")as f:
f.write(parsed.data)# Process all pages from the OCR responsedefprocess_pages(ocr_response, output_filename:str):withopen(output_filename,"wt")as f:for page in ocr_response.pages:
f.write(page.markdown)for image in page.images:
save_image(image)if __name__ =="__main__":iflen(sys.argv)<2:print("Usage: python ocr.py <file>")
sys.exit(1)
process_ocr(sys.argv[1])Được hỗ trợ bởi
Dùng phiên bản này cần gói datauri để lưu ảnh do Mistral OCR 3 nhận diện, có thể cài bằng:
Chúng ta đã biết Mistral OCR 3 cho phép cung cấp JSON schema để phân tích dữ liệu. Tính năng này cũng có khi dùng qua API.
Để làm vậy, chúng ta cần cung cấp JSON schema trong tham số document_annotation_format khi gửi yêu cầu. Dưới đây là ví dụ JSON schema cho hai cột model và result, tương ứng với bảng viết tay ví dụ.
document_annotation_format={
"name": "response_schema",
"schemaDefinition": {
"properties": {
"model": {
"type": "string",
"description": "The name of the model"
},
"result": {
"type": "number",
"description": "The benchmark result"
}
},
"required": [
"model"
]
}
}Được hỗ trợ bởi
Cấu trúc luôn như nhau. Chúng ta cần thêm một mục cho mỗi cột trong trường properties, bao gồm thông tin về kiểu dữ liệu và mô tả để giúp mẫu nhận diện dữ liệu.
Sau đó liệt kê tất cả trường bắt buộc trong trường required.
Để dùng cùng với mã, cách dễ nhất là lưu schema trong tệp JSON và tải bằng gói json.
Ý tưởng dự án với Mistral OCR 3
Một trong những lợi thế chính khi dùng Mistral OCR 3 qua API là khả năng xây dựng các công cụ phía trên. Phần này đưa ra vài ý tưởng dự án để bạn phát triển tiếp.
Ứng dụng theo dõi chi tiêu
Chúng ta đã học cách thực hiện OCR trên ảnh. Ta có thể dùng điều này để xây dựng ứng dụng chụp ảnh hóa đơn mua sắm, sau đó dùng Mistral OCR 3 xử lý dữ liệu trong ảnh và trích xuất một từ điển JSON liệt kê các mặt hàng trên hóa đơn và giá của chúng.
Các khoản chi này sau đó có thể được tự động phân loại và thêm vào cơ sở dữ liệu, giúp người dùng theo dõi chi tiêu.
Trình đọc tài liệu bằng âm thanh
Chúng ta có thể kết hợp Mistral OCR 3 với AI chuyển văn bản thành giọng nói để tạo trình đọc tài liệu bằng âm thanh. Người dùng chọn một PDF văn bản và gửi tới Mistral OCR 3 để xử lý. Sau đó văn bản thu được được gửi đến một mẫu AI chuyển văn bản thành giọng nói như OpenAI Audio API hoặc Eleven Labs.
Vì Mistral OCR 3 cũng làm việc với hình ảnh, nó có thể dùng với ảnh chụp, cho phép người dùng chụp tài liệu và nghe khi đang di chuyển.
Để tìm hiểu thêm về chuyển văn bản thành giọng nói, tôi gợi ý một trong các bài sau:
Mistral OCR 3 là công cụ mạnh và thực tiễn để biến tài liệu đời thực thành văn bản và dữ liệu có cấu trúc, dù bạn đang thử nghiệm trong AI Studio hay tích hợp qua Python.
Nó nổi bật trên trang quét, biểu mẫu và bảng, giữ bố cục với markdown và hình ảnh, và hỗ trợ JSON schema khi bạn cần cấu trúc. Dù vậy, như chúng ta thấy, chữ viết tay lộn xộn và tiêu đề mơ hồ vẫn có thể gây khó, và khi phân tích schema thất bại, kết quả chỉ trả về chính schema.
API khá trực quan sau khi xử lý vài điểm thiếu nhất quán nhỏ, và một bộ xử lý tệp tổng quát cùng chức năng lưu ảnh giúp dễ tích hợp vào ứng dụng nhỏ hoặc pipeline. Nếu chỉ muốn thử, Studio là con đường nhanh nhất. Cho môi trường sản xuất, hãy cân nhắc mô hình chi phí, gom lô khi có thể, và thêm bước kiểm định cho các trường hợp biên.
Từ đó, bạn có thể lặp lại; tinh chỉnh schema, kết hợp đầu ra với các mẫu khác, và xây dựng các tiện ích tập trung như trình phân tích hóa đơn hay trình đọc âm thanh, để mẫu lo phần nặng còn bạn đảm bảo độ tin cậy và trải nghiệm người dùng.
Mistral OCR 3 FAQs
Mistral OCR 3 có giá bao nhiêu?⌄
Mistral OCR 3 tính phí theo mỗi trang chứ không phải theo mỗi token (thường thấy ở LLM).
API tiêu chuẩn:$2 cho mỗi 1.000 trang.
API theo lô:$1 cho mỗi 1.000 trang (tốt nhất cho tác vụ khối lượng lớn không yêu cầu xử lý ngay).
Gói miễn phí: Không có phí thuê bao để truy cập mẫu ở gói "Free", nhưng dữ liệu sử dụng ở gói này có thể được Mistral dùng để huấn luyện các mẫu của họ. Để giữ dữ liệu riêng tư, bạn phải chọn gói trả phí.
Hỗ trợ định dạng tệp và ngôn ngữ nào?⌄
Mistral OCR 3 hỗ trợ đa ngôn ngữ gốc và có khả năng xử lý các hệ chữ phức tạp ngoài tiếng Anh.
Định dạng tệp: Chủ yếu hỗ trợ PDF và các định dạng ảnh phổ biến như JPEG, PNG, TIFF, WEBP và AVIF. Tài liệu cũng nêu hỗ trợ các định dạng tài liệu như DOCX và PPTX qua đầu vào document_url.
Ngôn ngữ: Hỗ trợ sẵn 35+ ngôn ngữ, gồm các ngôn ngữ La-tinh (Anh, Pháp, Tây Ban Nha), chữ Kirin, Ả Rập, Hindi và tiếng Trung (Phồn thể và Giản thể).
Mistral OCR 3 so với các Vision LLM như GPT-4o thì thế nào?⌄
Dù các Vision LLM nói chung (như GPT-4o) có thể "đọc" hình ảnh, Mistral OCR 3 là mẫu chuyên biệt được tối ưu riêng cho việc phân tích tài liệu.
Cấu trúc so với nội dung: Mistral OCR 3 vượt trội trong việc giữ cấu trúc bố cục, chuyển đổi các bảng phức tạp trực tiếp thành HTML/Markdown và trích xuất riêng hình ảnh nhúng. Vision LLM thường khó duy trì hình học bảng nghiêm ngặt hoặc tạo ảo giác khi phân tích bảng tính dày đặc.
Hiệu quả chi phí: Với xử lý tài liệu thuần túy (ví dụ, phân tích 10.000 hóa đơn), Mistral OCR 3 thường rẻ hơn đáng kể vì tính phí theo trang, trong khi Vision LLM tính theo token (token ảnh đầu vào + token văn bản đầu ra), có thể rất tốn kém với văn bản dày đặc.
Mistral OCR 3 có xử lý chữ viết tay không?⌄
Có, nhưng có giới hạn. Nó đạt tỷ lệ thắng 74% so với phiên bản trước trên các benchmark chữ viết tay và có thể xử lý chữ viết nối và chú thích pha trộn (ví dụ, viết nguệch ngoạc trên biểu mẫu in). Tuy nhiên, như quan sát trong thử nghiệm của bạn, nó vẫn có thể gặp khó với chữ viết tay quá rối hoặc văn bản bị gạch bỏ, đôi khi hiểu sai các chỉnh sửa thủ công hoặc coi chúng là văn bản hợp lệ.
Điều gì xảy ra nếu trích xuất JSON thất bại?⌄
Một trong những tính năng độc đáo của Mistral OCR 3 là Structured OCR, nơi bạn có thể định nghĩa một JSON schema (như tên cột và kiểu dữ liệu). Nếu mẫu không ánh xạ được nội dung tài liệu vào schema nghiêm ngặt của bạn, ví dụ do tiêu đề mơ hồ hoặc cột bị gộp, nó thường quay về trả lại chính định nghĩa schema hoặc một phân tích văn bản tiêu chuẩn thay vì bịa dữ liệu. Hành vi "an toàn khi lỗi" này giúp ngăn ứng dụng phía sau xử lý âm thầm dữ liệu không hợp lệ.
Kỹ sư full-stack & nhà sáng lập tại CheapGPT. Giảng dạy luôn là niềm đam mê của tôi. Từ những ngày còn là sinh viên, tôi đã háo hức tìm kiếm cơ hội kèm cặp và hỗ trợ các bạn học khác. Niềm đam mê đó đã thôi thúc tôi theo học tiến sĩ, nơi tôi cũng đảm nhiệm vai trò trợ giảng để hỗ trợ con đường học thuật của mình. Trong những năm ấy, tôi tìm thấy sự mãn nguyện lớn lao trong môi trường lớp học truyền thống, xây dựng kết nối và thúc đẩy việc học tập. Tuy nhiên, với sự ra đời của các nền tảng học trực tuyến, tôi nhận ra tiềm năng thay đổi của giáo dục số. Thực tế, tôi đã trực tiếp tham gia phát triển một nền tảng như vậy tại trường đại học của chúng tôi. Tôi tận tâm kết hợp các nguyên tắc giảng dạy truyền thống với những phương pháp số đổi mới. Đam mê của tôi là tạo ra các khóa học không chỉ hấp dẫn và giàu thông tin mà còn dễ tiếp cận với người học trong thời đại số này.
Mẫu OCR mới nhất của Mistral, Mistral OCR 3, có khả năng trích xuất văn bản và hình ảnh nhúng từ nhiều loại tài liệu với độ trung thực xuất sắc.
Trong bài viết này, tôi sẽ hướng dẫn bạn cách khai thác tối đa Mistral OCR 3 bằng cả AI Studio và API với Python. Chúng ta sẽ xây dựng một ứng dụng nhỏ biến ảnh chụp thực đơn thành một trang web tương tác.
Nếu bạn muốn học thêm về cách làm việc với API để xây dựng công cụ dùng AI, tôi khuyên bạn nên xem khóa học Working with the OpenAI API.
Mistral OCR là gì?
OCR là viết tắt của Optical Character Recognition (Nhận dạng ký tự quang học) và nhằm chuyển đổi tài liệu thành văn bản. Ví dụ, nó có thể chuyển ảnh chụp ghi chú viết tay thành văn bản hoặc một bảng trong PDF thành bảng văn bản thực có thể tìm kiếm và chỉnh sửa.
Mistral OCR 3 là mẫu hiểu tài liệu mới nhất của Mistral AI, mang lại độ chính xác và hiệu suất hàng đầu cho tài liệu thực tế. Nó trích xuất văn bản và hình ảnh nhúng với độ trung thực cao và giữ cấu trúc qua đầu ra markdown cùng tái tạo bảng dựa trên HTML, với tùy chọn JSON có cấu trúc.
Mistral OCR 3 vượt trội hơn tất cả đối thủ trên nhiều bộ đánh giá chuẩn:
So với Mistral OCR 2, nó đạt tỷ lệ thắng tổng thể 74% trên biểu mẫu, tài liệu quét, bảng phức tạp và chữ viết tay, với cải thiện lớn trên bản quét chất lượng thấp và bố cục dày đặc.
Để tìm hiểu thêm về OCR và mẫu trước đây của Mistral, hãy xem bài viết này: Mistral OCR: Hướng dẫn kèm ví dụ thực tế.
Sử dụng Mistral OCR 3 trên Mistral AI Studio
Hãy cùng tìm hiểu cách thiết lập để dùng Mistral OCR 3 với AI Studio.
Thiết lập tài khoản
Mistral OCR 3 có sẵn trên AI studio của họ. Đây là cách dễ nhất để thử vì có giao diện thân thiện.
Khi đăng ký, trước tiên chúng ta được yêu cầu tạo một tổ chức:
Ban đầu, Mistral OCR 3 sẽ bị khóa và chúng ta cần chọn gói để mở khóa:
Có thể chọn gói miễn phí, cho phép dùng Mistral OCR 3 với điều kiện họ được phép thu thập dữ liệu sử dụng để cải thiện dịch vụ. Hoặc chúng ta có thể nhập thông tin thẻ và trả phí theo mức sử dụng.
Không có phí thuê bao, nhưng phí là $2 hoặc $1 cho mỗi 1.000 trang, tùy thuộc vào việc có dùng yêu cầu theo lô hay không.
Phân tích tài liệu đầu tiên
Sau khi thiết lập tài khoản, chúng ta có thể thử nghiệm Mistral OCR 3 bằng cách vào thẻ "Document AI" trên AI Studio.
Để bắt đầu, chúng ta tải lên tài liệu hoặc hình ảnh muốn thực hiện OCR. Trường hợp của tôi, tôi viết vài dòng và một bảng trên giấy rồi tải lên. Chữ viết tay của tôi khá xấu, nên tôi tò mò liệu Mistral OCR 3 có hiểu được không.
Khi chọn tệp, chúng ta sẽ thấy các tùy chọn về cách xử lý tệp. Ở ví dụ đầu tiên này, tôi giữ nguyên mặc định và chỉ nhấp nút "Run" ở góc trên bên phải.
Đây là kết quả:
Kết quả khá tốt, nhưng chưa hoàn hảo:
Khám phá tùy chọn phân tích
Một tính năng hay của Mistral OCR 3 là khả năng chỉ định cấu trúc JSON để phân tích dữ liệu. Điều này đặc biệt hữu ích khi phân tích bảng, cho phép chúng ta chỉ định tên cột và kiểu dữ liệu để nhận được các hàng dưới dạng từ điển JSON.
Hãy thử phân tích lại bảng ở ví dụ trước bằng cách chỉ định một JSON schema.
Để cung cấp JSON schema, chúng ta cần chọn JSON schema thay vì chế độ văn bản trước khi chạy OCR.
Sau đó, chúng ta cung cấp schema bằng mã hoặc qua giao diện "Visual Builder". Tôi khuyến nghị cách thứ hai vì đơn giản hơn khi đang dùng mẫu thủ công.
Khi thêm một trường, chúng ta chỉ định:
Trong trường hợp này, tôi chỉ định hai trường, một cho tên mẫu và một cho kết quả benchmark:
Giờ chúng ta có thể nhấp "Run" và xem kết quả. Đáng tiếc, ví dụ này không thành công. Trong kết quả, thứ duy nhất được trả về là schema tôi cung cấp, chứ không phải dữ liệu thực tế.
Tôi nghĩ có thể mình đã dùng sai, nên để chắc chắn, tôi chụp màn hình một bảng mẫu từ Wikipedia) và thử lại.
Tôi chỉ định bốn cột, để cột cuối tùy chọn:
Lần này thì hoạt động tốt. Có vẻ khi phân tích thất bại, kết quả JSON chỉ là schema đã cung cấp. Điều này cũng có nghĩa Mistral OCR 3 đã không phân tích được bảng viết tay của tôi thành JSON mặc dù có thể hiển thị nó dưới dạng văn bản.
Sử dụng Mistral OCR 3 với Python
Trong phần này, chúng ta sẽ tìm hiểu cách dùng Python để tương tác với API Mistral OCR 3. Cách này linh hoạt hơn nhiều, vì chúng ta có thể, chẳng hạn, kết hợp đầu ra với các mẫu AI khác để xử lý dữ liệu đã trích xuất.
Khi tải tệp lên AI Studio, có nút "Code" bên cạnh nút "Run". Nhấp vào đó, chúng ta sẽ thấy đoạn mã cần thiết nếu thực hiện thao tác này qua API.
Đây là một ví dụ:
Tuy nhiên, mã Python được cung cấp không hoàn toàn chính xác. Ví dụ, nó định nghĩa hàm
encode_filenhưng lại gọi hàmencode. Đây là những điểm chưa khớp nhỏ, nhưng khiến mã không chạy được ngay lập tức.Đừng lo, chúng ta sẽ giải thích chi tiết cách dùng API. Để tìm hiểu thêm về API, chúng tôi khuyến nghị xem tài liệu chính thức.
Thiết lập API
Việc đầu tiên cần làm là tạo khóa API trong thẻ "API Keys" và sao chép khóa đó vào tệp mới tên
.envđặt cùng thư mục với script Python.Tiếp theo, cài đặt các phụ thuộc cần thiết:
Thực hiện OCR trên ảnh
Dưới đây là script Python tải một ảnh JPEG cục bộ, thực hiện OCR và lưu kết quả vào tệp markdown:
Thực hiện OCR trên PDF
Khi đầu vào là PDF thay vì ảnh, điều duy nhất thay đổi là giá trị trong trường
document. Với ảnh JPEG, chúng ta dùng:Với PDF, chúng ta dùng:
Dưới đây là một hàm đầy đủ để xử lý PDF:
Tạo phiên bản tổng quát
Việc có hai hàm riêng để xử lý PDF và JPEG hơi bất tiện và cũng không phải thực hành tốt, vì có nhiều mã dùng chung.
Để tránh điều này, chúng tôi viết một hàm mới, cải tiến dùng gói
mimetypesđể nhận diện loại tệp được cung cấp và xây dựng yêu cầu API tương ứng. Chúng tôi cũng cập nhật mã để lưu lại các hình ảnh được nhận diện trong tài liệu.Đây là phiên bản cuối:
Dùng phiên bản này cần gói
datauriđể lưu ảnh do Mistral OCR 3 nhận diện, có thể cài bằng:Cung cấp JSON schema
Chúng ta đã biết Mistral OCR 3 cho phép cung cấp JSON schema để phân tích dữ liệu. Tính năng này cũng có khi dùng qua API.
Để làm vậy, chúng ta cần cung cấp JSON schema trong tham số
document_annotation_formatkhi gửi yêu cầu. Dưới đây là ví dụ JSON schema cho hai cộtmodelvàresult, tương ứng với bảng viết tay ví dụ.Cấu trúc luôn như nhau. Chúng ta cần thêm một mục cho mỗi cột trong trường
properties, bao gồm thông tin về kiểu dữ liệu và mô tả để giúp mẫu nhận diện dữ liệu.Sau đó liệt kê tất cả trường bắt buộc trong trường
required.Để dùng cùng với mã, cách dễ nhất là lưu schema trong tệp JSON và tải bằng gói
json.Ý tưởng dự án với Mistral OCR 3
Một trong những lợi thế chính khi dùng Mistral OCR 3 qua API là khả năng xây dựng các công cụ phía trên. Phần này đưa ra vài ý tưởng dự án để bạn phát triển tiếp.
Ứng dụng theo dõi chi tiêu
Chúng ta đã học cách thực hiện OCR trên ảnh. Ta có thể dùng điều này để xây dựng ứng dụng chụp ảnh hóa đơn mua sắm, sau đó dùng Mistral OCR 3 xử lý dữ liệu trong ảnh và trích xuất một từ điển JSON liệt kê các mặt hàng trên hóa đơn và giá của chúng.
Các khoản chi này sau đó có thể được tự động phân loại và thêm vào cơ sở dữ liệu, giúp người dùng theo dõi chi tiêu.
Trình đọc tài liệu bằng âm thanh
Chúng ta có thể kết hợp Mistral OCR 3 với AI chuyển văn bản thành giọng nói để tạo trình đọc tài liệu bằng âm thanh. Người dùng chọn một PDF văn bản và gửi tới Mistral OCR 3 để xử lý. Sau đó văn bản thu được được gửi đến một mẫu AI chuyển văn bản thành giọng nói như OpenAI Audio API hoặc Eleven Labs.
Vì Mistral OCR 3 cũng làm việc với hình ảnh, nó có thể dùng với ảnh chụp, cho phép người dùng chụp tài liệu và nghe khi đang di chuyển.
Để tìm hiểu thêm về chuyển văn bản thành giọng nói, tôi gợi ý một trong các bài sau:
Kết luận
Mistral OCR 3 là công cụ mạnh và thực tiễn để biến tài liệu đời thực thành văn bản và dữ liệu có cấu trúc, dù bạn đang thử nghiệm trong AI Studio hay tích hợp qua Python.
Nó nổi bật trên trang quét, biểu mẫu và bảng, giữ bố cục với markdown và hình ảnh, và hỗ trợ JSON schema khi bạn cần cấu trúc. Dù vậy, như chúng ta thấy, chữ viết tay lộn xộn và tiêu đề mơ hồ vẫn có thể gây khó, và khi phân tích schema thất bại, kết quả chỉ trả về chính schema.
API khá trực quan sau khi xử lý vài điểm thiếu nhất quán nhỏ, và một bộ xử lý tệp tổng quát cùng chức năng lưu ảnh giúp dễ tích hợp vào ứng dụng nhỏ hoặc pipeline. Nếu chỉ muốn thử, Studio là con đường nhanh nhất. Cho môi trường sản xuất, hãy cân nhắc mô hình chi phí, gom lô khi có thể, và thêm bước kiểm định cho các trường hợp biên.
Từ đó, bạn có thể lặp lại; tinh chỉnh schema, kết hợp đầu ra với các mẫu khác, và xây dựng các tiện ích tập trung như trình phân tích hóa đơn hay trình đọc âm thanh, để mẫu lo phần nặng còn bạn đảm bảo độ tin cậy và trải nghiệm người dùng.