Mistral’ın en yeni OCR modeli Mistral OCR 3, çok çeşitli belgelerden metin ve gömülü görselleri olağanüstü doğrulukla çıkarabiliyor.
Bu yazıda, hem AI Studio’larını hem de Python ile API’lerini kullanarak Mistral OCR 3’ten nasıl en iyi şekilde yararlanabileceğinizi öğreteceğim. Bir menü fotoğrafını etkileşimli bir web sitesine dönüştüren küçük bir uygulama geliştireceğiz.
API’lerle çalışarak yapay zekâ destekli araçlar geliştirme hakkında daha fazla bilgi edinmek istiyorsanız OpenAI API ile Çalışma kursuna göz atmanızı öneririm.
Mistral OCR nedir?
OCR, Optik Karakter Tanıma anlamına gelir ve belgeleri metne dönüştürmeyi amaçlar. Örneğin, el yazısıyla yazılmış bir notun fotoğrafını metne çevirebilir veya bir PDF’deki tabloyu aranabilir ve düzenlenebilir gerçek bir metin tablosuna dönüştürebilir.
Mistral OCR 3, Mistral AI’ın en yeni belge anlama modeli olup gerçek dünya belgelerinde son teknoloji doğruluk ve verimlilik sunar. Metni ve gömülü görselleri yüksek sadakatle çıkarır; HTML tabanlı tablo yeniden oluşturma ile markdown çıktısı üzerinden yapıyı korur ve isteğe bağlı olarak yapılandırılmış JSON sağlar.
Mistral OCR 3, çok sayıda kıyaslamada tüm rakiplerinden daha iyi performans gösterir:
Mistral OCR 2 ile karşılaştırıldığında, formlar, taranmış belgeler, karmaşık tablolar ve el yazısı gibi alanlarda genel olarak %74 kazanım oranı elde eder; düşük kaliteli taramalar ve yoğun yerleşimlerde büyük iyileşmeler sağlar.
AI Studio ile Mistral OCR 3’ü kullanmak için nasıl kurulum yapacağımızı inceleyelim.
Hesap kurulumu
Mistral OCR 3, AI stüdyolarında kullanılabilir. Kullanıcı dostu bir arayüz sunduğu için denemenin en kolay yoludur.
Kaydolduğumuzda, önce bir organizasyon oluşturmamız isteniyor:
Başlangıçta Mistral OCR 3 kilitli olacaktır ve kilidi açmak için bir plan seçmemiz gerekir:
Kullanım verilerinin hizmetlerini geliştirmek için toplanmasına izin vererek Mistral OCR 3’ü kullanmaya olanak tanıyan ücretsiz bir plan seçmek mümkündür. Alternatif olarak, kredi kartı bilgilerini girip kullanım başına ücretlendirilmeyi tercih edebiliriz.
Abonelik ücreti yoktur; ancak toplu istek kullanıp kullanmadığımıza bağlı olarak 1.000 sayfa başına 2 $ veya 1 $ ücretlendiriliriz.
İlk belgemizi ayrıştırma
Hesap kurulduktan sonra, AI Studio’daki "Document AI" sekmesine erişerek Mistral OCR 3 ile denemeler yapabiliriz.
Başlamak için, OCR uygulamak istediğimiz belgeyi veya görseli yüklüyoruz. Benim durumda, bir kağıda biraz metin ve bir tablo yazdım ve bunu yükledim. El yazım oldukça kötü, bu yüzden Mistral OCR 3’ün bunu anlayıp anlayamayacağını merak ediyordum.
Dosya seçildiğinde, dosyanın nasıl işleneceğine dair seçenekler sunulur. Bu ilk örnekte, varsayılan seçenekleri bıraktım ve sağ üst köşedeki "Çalıştır" düğmesine tıkladım.
Sonuç şöyle:
Sonuç oldukça iyi, ancak kusursuz değil:
İlk cümlede iki hata var: "homd" yerine "hand" ve "tarnible" yerine "terrible."
Tablo genel olarak iyi, ancak sütun adlarını doğru tanımlayamadı. "OCR Benchmark Multilingual Chinese" tablo adı ile "Result" sütunu birleştirildi.
Üzerini çizdiğim hataları ele alış biçimi beni etkiledi. Ancak notlarımı ayrıştırmak için kullanıyor olsaydım, bunların tespit edilip hariç bırakılmasını tercih ederdim.
Son olarak, geleneksel Çince bir cümle yazdım ve çoğunu tanıyabildi. "好" karakteri iki ayrı karakter, "女" ve "子" olarak ayrıştırıldı, virgüller "g" harfi olarak tanındı ve sonda da bir hata var.
Ayrıştırma seçeneklerini keşfetme
Mistral OCR 3’ün güzel özelliklerinden biri, veriyi ayrıştırmak için bir JSON yapısı belirtebilme yeteneğidir. Bu, özellikle tabloları ayrıştırırken faydalıdır; sütun adlarını ve veri tiplerini belirterek satırları bir JSON sözlüğü olarak elde etmemizi sağlar.
Önceki örnekteki tabloyu bir JSON şeması belirterek tekrar ayrıştırmayı deneyelim.
Bir JSON şeması sağlamak için, OCR’ı çalıştırmadan önce metin modu yerine JSON şemasını seçmemiz gerekir.
Ardından şemayı kodla veya "Görsel Oluşturucu" kullanıcı arayüzünü kullanarak sağlarız. Modeli zaten elle kullanıyorsak ikinci seçeneği öneririm; daha basittir.
Bir alan eklerken şu bilgileri belirtiriz:
Adı
Açıklaması
Veri türü
Zorunlu olup olmadığı
Bu durumda, biri modelin adı diğeri kıyaslama sonucu için olmak üzere iki alan belirttim:
Artık "Çalıştır"a tıklayıp sonuçları görebiliriz. Ne yazık ki bu örnek çalışmadı. Sonuçlarda, verilen tek şey benim sağladığım şemaydı; gerçek veriler değil.
Belki yanlış kullandığımı düşündüm; emin olmak için bir Wikipedia örnek tablosunun ekran görüntüsünü alıp tekrar denedim.
Dördüncü sütunu isteğe bağlı bırakarak dört sütun belirttim:
Bu kez iyi çalıştı. Ayrıştırma başarısız olduğunda JSON sonucunun yalnızca sağlanan şema olduğu anlaşılıyor. Bu da, Mistral OCR 3’ün el yazısı tablomı JSON olarak ayrıştıramadığı, ancak metin olarak işleyebildiği anlamına geliyor.
Python ile Mistral OCR 3 kullanma
Bu bölümde, Mistral OCR 3 API’siyle etkileşim kurmak için Python’u nasıl kullanacağımızı inceleyeceğiz. Bu yaklaşım, örneğin çıktıların çıkarılan verileri işlemek üzere diğer yapay zekâ modelleriyle birleştirilmesine olanak tanıdığı için çok daha fazla esneklik sağlar.
AI Studio’ya bir dosya yüklediğimizde, "Çalıştır" düğmesinin yanında bir "Kod" düğmesi bulunur. Buna tıklayarak, aynı işlemi API kullanarak gerçekleştirmek için hangi koda ihtiyaç duyulacağını görebiliriz.
İşte bir örnek:
Ancak, sağlanan Python kodu tam olarak doğru değil. Örneğin, encode_file adlı bir işlev tanımlıyor ama sonra encode adlı bir işlev çağırıyor. Bunlar küçük tutarsızlıklar olsa da kodun kutudan çıktığı gibi çalışmamasına neden oluyor.
Endişelenmeyin, API’yi nasıl kullanacağınızı ayrıntılı olarak açıklayacağız. API hakkında daha fazla bilgi edinmek için resmî dokümantasyona göz atmanızı öneririz.
API kurulumu
Yapmamız gereken ilk şey, "API Keys" sekmesinde bir API anahtarı oluşturmak ve bu anahtarı Python betiğiyle aynı klasörde bulunan .env adlı yeni bir dosyaya kopyalamaktır.
İşte yerel bir JPEG görseli yükleyen, üzerinde OCR gerçekleştiren ve sonucu bir markdown dosyasına kaydeden bir Python betiği:
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)Altyapı:
Bir PDF üzerinde OCR gerçekleştirme
Girdi bir görsel yerine PDF olduğunda, değişen tek şey document alanına sağlanan değerdir. Bir JPEG görsel için şunu kullanmıştık:
PDF ve JPEG dosyalarını işlemek için iki ayrı işlev bulundurmak biraz zahmetli ve pek iyi bir uygulama değil; çünkü iki işlev arasında çok fazla ortak kod var.
Bunu önlemek için, sağlanan dosyanın türünü belirlemeye çalışmak ve buna göre API isteğini oluşturmak için mimetypes paketini kullanan yeni, geliştirilmiş bir işlev yazdık. Ayrıca belgede tespit edilen görselleri kaydetmek üzere kodu güncelledik.
İşte son sürüm:
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])Altyapı:
Bu sürümü kullanmak, Mistral OCR 3 tarafından tespit edilen görseli kaydetmek için datauri paketini gerektirir; şu komutla kurulabilir:
Yukarıda, Mistral OCR 3’ün veriyi ayrıştırmak için bir JSON şeması sağlamamıza izin verdiğini öğrendik. Bu özellik, API üzerinden kullanırken de mevcuttur.
Bunu yapmak için, istekte bulunurken JSON şemasını document_annotation_format parametresinde sağlamamız gerekir. Aşağıda, el yazısı tablo örneğine karşılık gelen model ve result adlı iki sütun için bir JSON şeması örneği yer alıyor.
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"
]
}
}Altyapı:
Yapı her zaman aynıdır. properties alanına her sütun için bir girdi eklememiz, veri türü ve modele veriyi tanımlamada yardımcı olacak bir açıklama bilgisi sunmamız gerekir.
Ardından, tüm zorunlu alanları required alanı altında listeleriz.
Bunu kodla birlikte kullanmanın en kolay yolu, şemayı bir JSON dosyasında saklamak ve json paketiyle yüklemektir.
Mistral OCR 3 Proje Fikirleri
Mistral OCR 3’ü API ile kullanmanın başlıca avantajlarından biri, onun üzerine inşa edebilmektir. Bu bölümde, üzerine geliştirebileceğiniz birkaç proje fikri sunuyoruz.
Harcamaları takip uygulaması
Bir görsel üzerinde nasıl OCR yapacağımızı öğrendik. Bunu, bir alışveriş fişinin fotoğrafını çeken, ardından görseldeki verileri işlemek ve fişteki kalemleri ve fiyatlarını listeleyen bir JSON sözlüğü çıkarmak için Mistral OCR 3’ü kullanan bir uygulama oluşturmakta kullanabiliriz.
Bu harcamalar otomatik olarak kategorize edilip bir veritabanına eklenebilir; böylece kullanıcı harcamalarını takip edebilir.
Belge sesli okuma
Mistral OCR 3’ü bir metin-okuma (text-to-speech) yapay zekâ ile birleştirerek bir belge sesli okuyucusu oluşturabiliriz. Kullanıcı bir metin PDF’i seçip işlem için Mistral OCR 3’e gönderir. Ardından ortaya çıkan metin, OpenAI Audio API veya Eleven Labs gibi bir metin-okuma modeline gönderilir.
Mistral OCR 3 görsellerle de çalıştığından, fotoğraflarla birlikte kullanılabilir; kullanıcıların bir belgenin fotoğrafını çekip yolda dinlemesine olanak tanır.
Metin-okuma hakkında daha fazla bilgi edinmek için aşağıdakilerden birini öneririm:
Mistral OCR 3, ister AI Studio’da denemeler yapın ister Python ile entegre edin, gerçek dünya belgelerini kullanılabilir metin ve yapılandırılmış verilere dönüştürmek için yetenekli ve pratik bir araçtır.
Taranmış sayfalarda, formlarda ve tablolarda parlıyor; markdown ve görsellerle yerleşimi koruyor; yapıya ihtiyaç duyduğunuzda JSON şemayı destekliyor. Yine de gördüğümüz gibi, dağınık el yazıları ve belirsiz başlıklar onu zorlayabiliyor ve başarısız şema ayrıştırmalarında yalnızca şemanın döndürüldüğünü görüyoruz.
Küçük tutarsızlıklar giderildiğinde API oldukça yalın; genel bir dosya işleyici ve görsel kaydetme ile küçük uygulamalara veya iş akışlarına entegre etmek kolaylaşıyor. Sadece denemek istiyorsanız Studio en hızlı yol. Üretim kullanımında maliyet modelini göz önünde bulundurun, mümkün olduğunda toplu çalıştırın ve uç durumlar için doğrulama ekleyin.
Bundan sonra yineleyebilirsiniz; şemaları ayarlayın, çıktılarını diğer modellerle birleştirin ve makbuz ayrıştırıcıları veya sesli okuyucular gibi odaklı yardımcı araçlar geliştirin; model ağır işi yaparken siz güvenilirlik ve kullanıcı deneyimine odaklanın.
Mistral OCR 3 SSS
Mistral OCR 3 ne kadar maliyetlidir?⌄
Mistral OCR 3, (LLM’lerde yaygın olan) belirteç başına değil, sayfa başına ödeme modelinde çalışır.
Standart API:1.000 sayfa için 2 $.
Toplu API:1.000 sayfa için 1 $ (anında işleme gerekmeyen yüksek hacimli görevler için en iyisi).
Ücretsiz Katman: "Ücretsiz" planda modele erişmek için abonelik ücreti yoktur; ancak bu katmandaki kullanım verileri Mistral tarafından modellerini eğitmek için kullanılabilir. Verileri özel tutmak için ücretli bir plan seçmeniz gerekir.
Hangi dosya biçimleri ve diller destekleniyor?⌄
Mistral OCR 3 yerel olarak çok dilli olup İngilizce’nin ötesindeki karmaşık yazı sistemlerini de işleyebilir.
Dosya Biçimleri: Öncelikle PDF ve JPEG, PNG, TIFF, WEBP ve AVIF gibi yaygın görsel biçimlerini destekler. Belgelerde ayrıca document_url girdisi üzerinden DOCX ve PPTX gibi biçimlerin de desteklendiği belirtilir.
Diller: Latin tabanlı diller (İngilizce, Fransızca, İspanyolca), Kiril, Arapça, Hintçe ve Çince (Geleneksel ve Basitleştirilmiş) dahil olmak üzere 35+ dili yerleşik olarak destekler.
Mistral OCR 3, GPT-4o gibi Görsel LLM’lerle nasıl karşılaştırılır?⌄
Genel Görsel LLM’ler (ör. GPT-4o) görselleri "okuyabilse" de, Mistral OCR 3 özellikle belge ayrıştırma için optimize edilmiş uzman bir modeldir.
Yapı vs. İçerik: Mistral OCR 3, yerleşim yapısını korumada üstündür; karmaşık tabloları doğrudan HTML/Markdown’a dönüştürür ve gömülü görselleri ayrı ayrı çıkarır. Görsel LLM’ler ise sık sık katı tablo geometrisini korumakta zorlanır veya yoğun e-tabloları ayrıştırırken halüsinasyon üretebilir.
Maliyet Verimliliği: Saf belge işleme (ör. 10.000 faturanının ayrıştırılması) için, Mistral OCR 3 genellikle çok daha ucuzdur; çünkü sayfa başına ödeme yaparsınız; oysa Görsel LLM’ler belirteç başına (girdi görsel belirteçleri + çıktı metin belirteçleri) ücretlendirir ve bu da yoğun metinlerde hızla pahalılaşabilir.
Mistral OCR 3 el yazısını işler mi?⌄
Evet, ancak sınırlamalar var. El yazısı kıyaslamalarında selefine göre %74’lük bir kazanım oranı elde etmiş olup bitişik yazı ve karma açıklamaları (ör. basılı bir form üzerindeki karalamalar) yönetebilir. Ancak sizin deneylerinizde de belirtildiği gibi, çok dağınık el yazılarında veya üzeri çizili belirli metinlerde hâlâ zorlanabilir; manuel düzeltmeleri zaman zaman etkin metin olarak yanlış yorumlayabilir.
JSON çıkarımı başarısız olursa ne olur?⌄
Mistral OCR 3’ün benzersiz özelliklerinden biri, sütun adları ve veri türlerini tanımlayabildiğiniz Yapılandırılmış OCR’dır. Model, örneğin belirsiz başlıklar veya birleştirilmiş sütunlar nedeniyle belgenin içeriğini katı şemanıza eşleyemezse, genellikle uydurma veriler üretmek yerine şemanın kendisini döndürmeye veya standart bir metin ayrıştırmasına geri düşer. Bu "güvenli başarısızlık" davranışı, aşağı akıştaki uygulamaların geçersiz verileri fark edilmeksizin işlemesini önlemeye yardımcı olur.
CheapGPT’te full-stack mühendisi ve kurucuyum. Öğretmek her zaman tutkum oldu. Öğrencilik yıllarımdan itibaren diğer öğrencilere ders verme ve yardımcı olma fırsatlarını hevesle aradım. Bu tutku beni doktora yapmaya yönlendirdi; bu süreçte akademik çalışmalarımı desteklemek için araştırma görevlisi olarak da görev aldım. O yıllarda, geleneksel sınıf ortamında bağlar kurmaktan ve öğrenmeyi kolaylaştırmaktan büyük bir tatmin duydum. Ancak çevrim içi öğrenme platformlarının ortaya çıkmasıyla birlikte dijital eğitimin dönüştürücü potansiyelini fark ettim. Nitekim üniversitemizde bu tür bir platformun geliştirilmesinde aktif rol aldım. Geleneksel öğretim ilkelerini yenilikçi dijital yöntemlerle bütünleştirmeye derinden bağlıyım. Tutkum, yalnızca ilgi çekici ve bilgilendirici olmakla kalmayan, aynı zamanda bu dijital çağdaki öğrenenler için erişilebilir kurslar tasarlamaktır.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
OpenAI API ile yapay zekâ destekli uygulamalar geliştirmeye başlayın. ChatGPT gibi popüler yapay zeka uygulamalarının temelini oluşturan işlevselliği öğrenin.
Mistral’ın en yeni OCR modeli Mistral OCR 3, çok çeşitli belgelerden metin ve gömülü görselleri olağanüstü doğrulukla çıkarabiliyor.
Bu yazıda, hem AI Studio’larını hem de Python ile API’lerini kullanarak Mistral OCR 3’ten nasıl en iyi şekilde yararlanabileceğinizi öğreteceğim. Bir menü fotoğrafını etkileşimli bir web sitesine dönüştüren küçük bir uygulama geliştireceğiz.
API’lerle çalışarak yapay zekâ destekli araçlar geliştirme hakkında daha fazla bilgi edinmek istiyorsanız OpenAI API ile Çalışma kursuna göz atmanızı öneririm.
Mistral OCR nedir?
OCR, Optik Karakter Tanıma anlamına gelir ve belgeleri metne dönüştürmeyi amaçlar. Örneğin, el yazısıyla yazılmış bir notun fotoğrafını metne çevirebilir veya bir PDF’deki tabloyu aranabilir ve düzenlenebilir gerçek bir metin tablosuna dönüştürebilir.
Mistral OCR 3, Mistral AI’ın en yeni belge anlama modeli olup gerçek dünya belgelerinde son teknoloji doğruluk ve verimlilik sunar. Metni ve gömülü görselleri yüksek sadakatle çıkarır; HTML tabanlı tablo yeniden oluşturma ile markdown çıktısı üzerinden yapıyı korur ve isteğe bağlı olarak yapılandırılmış JSON sağlar.
Mistral OCR 3, çok sayıda kıyaslamada tüm rakiplerinden daha iyi performans gösterir:
Mistral OCR 2 ile karşılaştırıldığında, formlar, taranmış belgeler, karmaşık tablolar ve el yazısı gibi alanlarda genel olarak %74 kazanım oranı elde eder; düşük kaliteli taramalar ve yoğun yerleşimlerde büyük iyileşmeler sağlar.
OCR ve Mistral’ın önceki modeli hakkında daha fazla bilgi edinmek için şu makaleye bakın: Mistral OCR: Pratik Örneklerle Bir Rehber.
Mistral AI Studio’da Mistral OCR 3 kullanma
AI Studio ile Mistral OCR 3’ü kullanmak için nasıl kurulum yapacağımızı inceleyelim.
Hesap kurulumu
Mistral OCR 3, AI stüdyolarında kullanılabilir. Kullanıcı dostu bir arayüz sunduğu için denemenin en kolay yoludur.
Kaydolduğumuzda, önce bir organizasyon oluşturmamız isteniyor:
Başlangıçta Mistral OCR 3 kilitli olacaktır ve kilidi açmak için bir plan seçmemiz gerekir:
Kullanım verilerinin hizmetlerini geliştirmek için toplanmasına izin vererek Mistral OCR 3’ü kullanmaya olanak tanıyan ücretsiz bir plan seçmek mümkündür. Alternatif olarak, kredi kartı bilgilerini girip kullanım başına ücretlendirilmeyi tercih edebiliriz.
Abonelik ücreti yoktur; ancak toplu istek kullanıp kullanmadığımıza bağlı olarak 1.000 sayfa başına 2 $ veya 1 $ ücretlendiriliriz.
İlk belgemizi ayrıştırma
Hesap kurulduktan sonra, AI Studio’daki "Document AI" sekmesine erişerek Mistral OCR 3 ile denemeler yapabiliriz.
Başlamak için, OCR uygulamak istediğimiz belgeyi veya görseli yüklüyoruz. Benim durumda, bir kağıda biraz metin ve bir tablo yazdım ve bunu yükledim. El yazım oldukça kötü, bu yüzden Mistral OCR 3’ün bunu anlayıp anlayamayacağını merak ediyordum.
Dosya seçildiğinde, dosyanın nasıl işleneceğine dair seçenekler sunulur. Bu ilk örnekte, varsayılan seçenekleri bıraktım ve sağ üst köşedeki "Çalıştır" düğmesine tıkladım.
Sonuç şöyle:
Sonuç oldukça iyi, ancak kusursuz değil:
Ayrıştırma seçeneklerini keşfetme
Mistral OCR 3’ün güzel özelliklerinden biri, veriyi ayrıştırmak için bir JSON yapısı belirtebilme yeteneğidir. Bu, özellikle tabloları ayrıştırırken faydalıdır; sütun adlarını ve veri tiplerini belirterek satırları bir JSON sözlüğü olarak elde etmemizi sağlar.
Önceki örnekteki tabloyu bir JSON şeması belirterek tekrar ayrıştırmayı deneyelim.
Bir JSON şeması sağlamak için, OCR’ı çalıştırmadan önce metin modu yerine JSON şemasını seçmemiz gerekir.
Ardından şemayı kodla veya "Görsel Oluşturucu" kullanıcı arayüzünü kullanarak sağlarız. Modeli zaten elle kullanıyorsak ikinci seçeneği öneririm; daha basittir.
Bir alan eklerken şu bilgileri belirtiriz:
Bu durumda, biri modelin adı diğeri kıyaslama sonucu için olmak üzere iki alan belirttim:
Artık "Çalıştır"a tıklayıp sonuçları görebiliriz. Ne yazık ki bu örnek çalışmadı. Sonuçlarda, verilen tek şey benim sağladığım şemaydı; gerçek veriler değil.
Belki yanlış kullandığımı düşündüm; emin olmak için bir Wikipedia örnek tablosunun ekran görüntüsünü alıp tekrar denedim.
Dördüncü sütunu isteğe bağlı bırakarak dört sütun belirttim:
Bu kez iyi çalıştı. Ayrıştırma başarısız olduğunda JSON sonucunun yalnızca sağlanan şema olduğu anlaşılıyor. Bu da, Mistral OCR 3’ün el yazısı tablomı JSON olarak ayrıştıramadığı, ancak metin olarak işleyebildiği anlamına geliyor.
Python ile Mistral OCR 3 kullanma
Bu bölümde, Mistral OCR 3 API’siyle etkileşim kurmak için Python’u nasıl kullanacağımızı inceleyeceğiz. Bu yaklaşım, örneğin çıktıların çıkarılan verileri işlemek üzere diğer yapay zekâ modelleriyle birleştirilmesine olanak tanıdığı için çok daha fazla esneklik sağlar.
AI Studio’ya bir dosya yüklediğimizde, "Çalıştır" düğmesinin yanında bir "Kod" düğmesi bulunur. Buna tıklayarak, aynı işlemi API kullanarak gerçekleştirmek için hangi koda ihtiyaç duyulacağını görebiliriz.
İşte bir örnek:
Ancak, sağlanan Python kodu tam olarak doğru değil. Örneğin,
encode_fileadlı bir işlev tanımlıyor ama sonraencodeadlı bir işlev çağırıyor. Bunlar küçük tutarsızlıklar olsa da kodun kutudan çıktığı gibi çalışmamasına neden oluyor.Endişelenmeyin, API’yi nasıl kullanacağınızı ayrıntılı olarak açıklayacağız. API hakkında daha fazla bilgi edinmek için resmî dokümantasyona göz atmanızı öneririz.
API kurulumu
Yapmamız gereken ilk şey, "API Keys" sekmesinde bir API anahtarı oluşturmak ve bu anahtarı Python betiğiyle aynı klasörde bulunan
.envadlı yeni bir dosyaya kopyalamaktır.Ardından gerekli bağımlılıkları kurarız:
Bir görsel üzerinde OCR gerçekleştirme
İşte yerel bir JPEG görseli yükleyen, üzerinde OCR gerçekleştiren ve sonucu bir markdown dosyasına kaydeden bir Python betiği:
Bir PDF üzerinde OCR gerçekleştirme
Girdi bir görsel yerine PDF olduğunda, değişen tek şey
documentalanına sağlanan değerdir. Bir JPEG görsel için şunu kullanmıştık:PDF için ise şu kullanılır:
İşte bir PDF’i işlemek için kullanabileceğimiz tam bir işlev:
Genel bir sürüm oluşturma
PDF ve JPEG dosyalarını işlemek için iki ayrı işlev bulundurmak biraz zahmetli ve pek iyi bir uygulama değil; çünkü iki işlev arasında çok fazla ortak kod var.
Bunu önlemek için, sağlanan dosyanın türünü belirlemeye çalışmak ve buna göre API isteğini oluşturmak için
mimetypespaketini kullanan yeni, geliştirilmiş bir işlev yazdık. Ayrıca belgede tespit edilen görselleri kaydetmek üzere kodu güncelledik.İşte son sürüm:
Bu sürümü kullanmak, Mistral OCR 3 tarafından tespit edilen görseli kaydetmek için
datauripaketini gerektirir; şu komutla kurulabilir:Bir JSON şeması sağlama
Yukarıda, Mistral OCR 3’ün veriyi ayrıştırmak için bir JSON şeması sağlamamıza izin verdiğini öğrendik. Bu özellik, API üzerinden kullanırken de mevcuttur.
Bunu yapmak için, istekte bulunurken JSON şemasını
document_annotation_formatparametresinde sağlamamız gerekir. Aşağıda, el yazısı tablo örneğine karşılık gelenmodelveresultadlı iki sütun için bir JSON şeması örneği yer alıyor.Yapı her zaman aynıdır.
propertiesalanına her sütun için bir girdi eklememiz, veri türü ve modele veriyi tanımlamada yardımcı olacak bir açıklama bilgisi sunmamız gerekir.Ardından, tüm zorunlu alanları
requiredalanı altında listeleriz.Bunu kodla birlikte kullanmanın en kolay yolu, şemayı bir JSON dosyasında saklamak ve
jsonpaketiyle yüklemektir.Mistral OCR 3 Proje Fikirleri
Mistral OCR 3’ü API ile kullanmanın başlıca avantajlarından biri, onun üzerine inşa edebilmektir. Bu bölümde, üzerine geliştirebileceğiniz birkaç proje fikri sunuyoruz.
Harcamaları takip uygulaması
Bir görsel üzerinde nasıl OCR yapacağımızı öğrendik. Bunu, bir alışveriş fişinin fotoğrafını çeken, ardından görseldeki verileri işlemek ve fişteki kalemleri ve fiyatlarını listeleyen bir JSON sözlüğü çıkarmak için Mistral OCR 3’ü kullanan bir uygulama oluşturmakta kullanabiliriz.
Bu harcamalar otomatik olarak kategorize edilip bir veritabanına eklenebilir; böylece kullanıcı harcamalarını takip edebilir.
Belge sesli okuma
Mistral OCR 3’ü bir metin-okuma (text-to-speech) yapay zekâ ile birleştirerek bir belge sesli okuyucusu oluşturabiliriz. Kullanıcı bir metin PDF’i seçip işlem için Mistral OCR 3’e gönderir. Ardından ortaya çıkan metin, OpenAI Audio API veya Eleven Labs gibi bir metin-okuma modeline gönderilir.
Mistral OCR 3 görsellerle de çalıştığından, fotoğraflarla birlikte kullanılabilir; kullanıcıların bir belgenin fotoğrafını çekip yolda dinlemesine olanak tanır.
Metin-okuma hakkında daha fazla bilgi edinmek için aşağıdakilerden birini öneririm:
Sonuç
Mistral OCR 3, ister AI Studio’da denemeler yapın ister Python ile entegre edin, gerçek dünya belgelerini kullanılabilir metin ve yapılandırılmış verilere dönüştürmek için yetenekli ve pratik bir araçtır.
Taranmış sayfalarda, formlarda ve tablolarda parlıyor; markdown ve görsellerle yerleşimi koruyor; yapıya ihtiyaç duyduğunuzda JSON şemayı destekliyor. Yine de gördüğümüz gibi, dağınık el yazıları ve belirsiz başlıklar onu zorlayabiliyor ve başarısız şema ayrıştırmalarında yalnızca şemanın döndürüldüğünü görüyoruz.
Küçük tutarsızlıklar giderildiğinde API oldukça yalın; genel bir dosya işleyici ve görsel kaydetme ile küçük uygulamalara veya iş akışlarına entegre etmek kolaylaşıyor. Sadece denemek istiyorsanız Studio en hızlı yol. Üretim kullanımında maliyet modelini göz önünde bulundurun, mümkün olduğunda toplu çalıştırın ve uç durumlar için doğrulama ekleyin.
Bundan sonra yineleyebilirsiniz; şemaları ayarlayın, çıktılarını diğer modellerle birleştirin ve makbuz ayrıştırıcıları veya sesli okuyucular gibi odaklı yardımcı araçlar geliştirin; model ağır işi yaparken siz güvenilirlik ve kullanıcı deneyimine odaklanın.