Basit Bir Python Scripti ile Yapay Zekâ Destekli OCR Fatura Veri Çıkarımı

Basit Bir Python Scripti ile Yapay Zekâ Destekli OCR Fatura Veri Çıkarımı

FlowHunt’in API’si ile yapay zekâ tabanlı OCR ve Python kullanarak fatura veri çıkarımını otomatikleştirmeyi, hızlı, doğru ve ölçeklenebilir belge işlemenin yolunu öğrenin.

Yapay Zekâ Tabanlı OCR Nedir?

Yapay zekâ destekli OCR, geleneksel OCR’ın ötesine geçerek bağlamı anlamak, çok çeşitli yerleşimlerle başa çıkmak ve en karmaşık belgelerden bile yüksek kaliteli yapılandırılmış veri çıkarımı yapmak için yapay zekâ kullanır. Geleneksel OCR sabit bir formattaki metni yakalamak için tasarlanırken, Yapay Zekâ OCR, faturalarda ve diğer iş belgelerinde yaygın olan farklı türde yerleşim ve yapılandırmaları işleyebilir.

Yapay Zekâ Tabanlı OCR’ın Temel Özellikleri

  • Bağlamsal Anlayış: Yapay Zekâ OCR, belgelerde bağlamsal anlamak için NLP kullanır. “Toplam Tutar”, “Fatura Tarihi” ve “Müşteri Adı” gibi alanları, bu alanlar farklı yerlerde çıksa bile tanımlar.
  • Esneklik: Geleneksel OCR, düzensiz yerleşimlerde karışabilir; Yapay Zekâ OCR ise esnektir ve farklı fatura formatlarından kolayca bilgi çıkarabilir.
  • Veri Yapılandırma: Çoğu zaman, Yapay Zekâ OCR doğrudan yapılandırılmış çıktı sağlar, bu da geleneksel OCR’ın ham metin çıktısına göre işleme sonrası için daha elverişlidir.

Faturalarda Neden Yapay Zekâ OCR Kullanmalısınız?

Faturaların, muhasebe, lojistik veya satın alma departmanlarında olsun, hızlı ve yüksek doğrulukla işlenmesi gerekir. Yapay Zekâ OCR, veri çıkarımını otomatikleştirir ve iş akışlarını düzene sokarak veri doğruluğunu artırır.

Faturalar için Yapay Zekâ OCR’ın Faydaları

  • Hız ve Verimlilik: Yapay Zekâ OCR ile çok sayıda fatura çok kısa sürede işlenebilir; kaynak ve iş gücü tasarrufu sağlar.
  • Artan Doğruluk: Farklı belge formatlarında eğitilmiş yapay zekâ modelleri, manuel veri girişiyle ilgili hataları azaltır.
  • Daha Akıcı Veri Yönetimi: Veri zaten yapılandırılmış olduğu için, kolayca veritabanlarına, analiz sistemlerine ve hatta ERP sistemlerine entegre olur.
  • Ölçeklenebilirlik: Yapay Zekâ OCR, ek personele ihtiyaç duymadan yüksek hacimli belge işleyebilir; büyük veya hızla büyüyen işletmeler için idealdir.

FlowHunt’un Yapay Zekâ OCR Aracının Yatırım Getirisi (YG)

Çoğu geleneksel şirket, faturalardan veri çıkarmak için bu işleri çalışanlara yaptırarak manuel olarak gerçekleştirir. Bu, çok zaman alan ve maliyetli bir işlemdir ve vergi, hukuk ve finans şirketleri gibi birçok alanda ve şirkette otomatikleştirilebilir.

Bu işlem 5 ila 15 saniye sürer ve 0,01 – 0,02 krediye mal olur; oysa aynı işi bir çalışanın yapması için saatte 15 – 30 dolar ödemeniz gerekirdi.

OCR Cost Comparison
İşleyiciYıllık MaliyetYıllık İşlenen FaturaFatura Başına Maliyet
İnsan$30,00012,000$2.50
FlowHunt$16212,000$0.013
FlowHunt (30.000$’da)$30,0002,250,000$0.0133

Bence FlowHunt çok büyük bir farkla daha verimli.

OCR Uygulamasında Karşılaşılan Sorunlar

OCR oldukça faydalı olsa da bazı zorlukları vardır:

  1. Görsel Kalitesi: OCR doğruluğu büyük ölçüde görsel kalitesine bağlıdır. Bulanık veya düşük çözünürlüklü görseller kötü sonuçlar verir.
  2. Karmaşık Biçimlendirme: Karmaşık yerleşimli, karışık fontlu veya tablolu belgelerde gelişmiş OCR işleme gerekebilir.
  3. Dil ve Karakter Seti: OCR yazılımlarının dil desteği sınırlı olabilir; Latin olmayan karakterler için özel modeller gerekebilir.
  4. Hata Oranı: Hiçbir OCR yazılımı %100 doğru değildir; özellikle el yazısı veya düzensiz fontlarda çıktıdaki hatalar artabilir.

Bu zorlukların üstesinden gelmek için güçlü ve esnek bir OCR aracı kullanmak önemlidir. FlowHunt’in API’si, karmaşık belge yapılarıyla başa çıkabilen sağlam bir OCR çözümü sunar ve büyük ölçekli OCR projeleri için idealdir.

Python OCR Scriptinin Kurulumu

Süreci otomatikleştirmek için aşağıdaki Python kütüphanelerini kurmalısınız:

pip install requests pdf2image git+https://github.com/QualityUnit/flowhunt-python-sdk.git

Bu kurulum şunları içerir:

  • requests: FlowHunt API’sine HTTP istekleri göndermek ve OCR çıktısını indirmek için.
  • pdf2image: PDF sayfalarını görsele dönüştürmek için.
  • flowhunt: FlowHunt’in Python SDK’sı; OCR API ile iletişimi kolaylaştırır.

Kodun Adım Adım Açıklaması

Bu kod, bir PDF’i alır, görsele çevirir, her görseli FlowHunt’a OCR için gönderir ve çıktıyı CSV formatında kaydeder.

Kütüphaneleri Dahil Etme

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path
  • json, os, re ve time JSON işlemleri, dosya yönetimi, regex ve zaman aralıkları için kullanılır.
  • requests: HTTP isteklerini (ör. OCR sonuçlarını indirme) yönetmek için.
  • flowhunt: FlowHunt’in SDK’sı kimlik doğrulama ve OCR API ile iletişim sağlar.
  • pdf2image: PDF sayfalarını görsele çevirir, böylece her sayfa ayrı OCR yapılabilir.

PDF Sayfalarını Görsele Çevirme Fonksiyonu

def convert_pdf_to_image(path: str) -> None:
    """
    PDF dosyasını görsele çevirir, her sayfayı JPEG olarak kaydeder.
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page' + str(i) + '.jpg', 'JPEG')
  • convert_from_path: Her PDF sayfasını görsele çevirir.
  • images[i].save: Her sayfayı OCR işlemi için ayrı JPEG olarak kaydeder.

Çıktı Eki (Attachment) URL’sini Çıkarma

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None
  • Fonksiyon, OCR çıktısını indirmek için URL’yi alır.
  • Regex ile indirme linkinin bulunduğu JSON nesnesini bulur.

API Yapılandırması ve Kimlik Doğrulama

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(
    host="https://api.flowhunt.io",
    api_key={"APIKeyHeader": "<API_KEY_HERE>"}
)
  • PDF’i görsele çevirir.
  • FlowHunt kimlik bilgileriyle API erişimini ayarlar.

API İstemcisini Başlatma

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id
  • Kimlik doğrulaması yapar ve ardından sonraki API çağrıları için workspace_id alır.

Akış Oturumu Başlatma

flows_api = flowhunt.FlowsApi(api_client)
from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(flow_id=FLOW_ID)
create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)
  • Görselleri yüklemek ve OCR işlemi için bir oturum başlatır.

OCR İşleme için Görselleri Yükleme

for image in os.listdir("data/images"):
    image_name, image_extension = os.path.splitext(image)
    with open("data/images/" + image, "rb") as file:
        try:
            flow_sess_attachment = flows_api.upload_attachments(
                create_session_rsp.session_id,
                file.read()
            )
  • Oturumda her görseli OCR işlemi için yükler.

OCR İşlemini Çağırma ve Sonuçlar için Sorgulama

invoke_rsp = flows_api.invoke_flow_response(
    create_session_rsp.session_id, 
    flowhunt.FlowSessionInvokeRequest(message="")
)
while True:
    get_flow_rsp = flows_api.poll_flow_response(
        create_session_rsp.session_id, invoke_rsp.message_id
    )
    print("Flow response: ", get_flow_rsp)
    if get_flow_rsp.response_status == "S":
        print("done OCR")
        break
    time.sleep(3)
  • OCR işlemini başlatır ve her 3 saniyede bir tamamlanana kadar sorgular.

OCR Çıktısını İndirme ve Kaydetme

attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
if attachment_url:
    response = requests.get(attachment_url)
    with open("data/results/" + image_name + ".csv", "wb") as file:
        file.write(response.content)
  • CSV çıktısını indirir ve yerel olarak kaydeder.

Scripti Çalıştırma ve Sonuçları Test Etme

Scripti çalıştırmak için:

  1. PDF’inizi data/ klasörüne yerleştirin.
  2. <FLOW_ID_HERE> ve <API_KEY_HERE> alanlarını FlowHunt kimlik bilgilerinizle güncelleyin.
  3. Scripti çalıştırın; PDF’i dönüştürün, OCR için görselleri yükleyin ve yapılandırılmış CSV sonuçlarını indirin.

Sonuç

Bu Python scripti, OCR süreçlerini ölçeklemek için verimli bir çözüm sunar ve yüksek belge işleme ihtiyacı olan sektörler için idealdir. FlowHunt API ile belgeyi CSV’ye dönüştürme işlemini hızlıca gerçekleştirir, iş akışlarını kolaylaştırır ve verimliliği artırır.

Tam Kodun Genel Görünümü

Gist versiyonu için BURAYA tıklayın.

import json
import os
import re
import time
import requests
import flowhunt
from flowhunt.rest import ApiException
from pprint import pprint
from pdf2image import convert_from_path

def convert_pdf_to_image(path: str) -> None:
    """
    Convert a pdf file to an image
    :return:
    """
    images = convert_from_path(path)
    for i in range(len(images)):
        images[i].save('data/images/' + 'page'+ str(i) +'.jpg', 'JPEG')

def extract_attachment_url(data_string):
    pattern = r'```flowhunt\n({.*})\n```'
    match = re.search(pattern, data_string, re.DOTALL)
    if match:
        json_string = match.group(1)
        try:
            json_data = json.loads(json_string)
            return json_data.get('download_link', None)
        except json.JSONDecodeError:
            print("Error: Failed to decode JSON.")
            return None
    return None

convert_pdf_to_image("data/test.pdf")
FLOW_ID = "<FLOW_ID_HERE>"

configuration = flowhunt.Configuration(host = "https://api.flowhunt.io",
                                       api_key = {"APIKeyHeader": "<API_KEY_HERE>"})

with flowhunt.ApiClient(configuration) as api_client:
    auth_api = flowhunt.AuthApi(api_client)
    api_response = auth_api.get_user()
    workspace_id = api_response.api_key_workspace_id

    flows_api = flowhunt.FlowsApi(api_client)
    from_flow_create_session_req = flowhunt.FlowSessionCreateFromFlowRequest(
        flow_id=FLOW_ID
    )
    create_session_rsp = flows_api.create_flow_session(workspace_id, from_flow_create_session_req)

    for image in os.listdir("data/images"):
        image_name, image_extension = os.path.splitext(image)
        with open("data/images/" + image, "rb") as file:
            try:
                flow_sess_attachment = flows_api.upload_attachments(
                    create_session_rsp.session_id,
                    file.read()
                )
                invoke_rsp = flows_api.invoke_flow_response(create_session_rsp.session_id, flowhunt.FlowSessionInvokeRequest(
                    message="",
                ))
                while True:
                    get_flow_rsp = flows_api.poll_flow_response(create_session_rsp.session_id, invoke_rsp.message_id)
                    print("Flow response: ", get_flow_rsp)
                    if get_flow_rsp.response_status == "S":
                        print("done OCR")
                        attachment_url = extract_attachment_url(get_flow_rsp.final_response[0])
                        if attachment_url:
                            print("Attachment URL: ", attachment_url, "\n Downloading the file...")
                            response = requests.get(attachment_url)
                            with open("data/results/" + image_name + ".csv", "wb") as file:
                                file.write(response.content)
                        break
                    time.sleep(3)
            except ApiException as e:
                print("error for file ", image)
                print(e)

Sıkça sorulan sorular

Yapay zekâ tabanlı OCR nedir ve geleneksel OCR’dan farkı nedir?

Yapay zekâ tabanlı OCR, belge bağlamını anlamak, karmaşık yerleşimleri yönetmek ve faturalardan yapılandırılmış veri çıkarmak için makine öğrenmesi ve NLP’den yararlanır; geleneksel OCR ise sabit formatlı metin tanımaya dayanır.

Faturalar için Yapay Zekâ OCR kullanmanın başlıca faydaları nelerdir?

Yapay Zekâ OCR; hız, doğruluk, ölçeklenebilirlik ve yapılandırılmış çıktı sunarak manuel işi azaltır, hataları en aza indirir ve iş sistemleriyle sorunsuz entegrasyon sağlar.

Python ve FlowHunt ile fatura OCR otomasyonu nasıl uygulanır?

FlowHunt’in Python SDK’sını kullanarak PDF’leri görsele çevirebilir, FlowHunt’in API’sine OCR için gönderebilir ve yapılandırılmış verileri CSV formatında alarak tüm çıkarım sürecini otomatikleştirebilirsiniz.

OCR işleminde hangi zorluklar var ve FlowHunt bunları nasıl çözüyor?

Yaygın zorluklar; düşük görsel kalitesi, karmaşık belge yerleşimleri ve farklı dillerdeki belgeleri içerir. FlowHunt’in API’si, gelişmiş yapay zekâ modelleri ve esnek işleme yetenekleriyle bunların üstesinden gelir.

FlowHunt ile fatura veri çıkarımını otomatikleştirmenin YG’si nedir?

FlowHunt’in yapay zekâ OCR’ı faturaları saniyeler içinde, insan maliyetinin çok altında işler; büyüyen işletmeler için büyük verimlilik ve ölçeklenebilirlik sağlar.

Arshia, FlowHunt'ta bir Yapay Zeka İş Akışı Mühendisidir. Bilgisayar bilimi geçmişi ve yapay zekaya olan tutkusu ile, yapay zeka araçlarını günlük görevlere entegre eden verimli iş akışları oluşturmada uzmanlaşmıştır ve bu sayede verimlilik ile yaratıcılığı artırır.

Arshia Kahani
Arshia Kahani
Yapay Zeka İş Akışı Mühendisi

FlowHunt'un Yapay Zekâ Fatura OCR Aracını Deneyin

FlowHunt’in güçlü yapay zekâ OCR’ı ile fatura veri çıkarımını otomatikleştirin. Zaman kazanın, hataları azaltın ve PDF’leri saniyeler içinde yapılandırılmış veriye dönüştürerek iş akışınızı kolaylaştırın.

Daha fazla bilgi

Yapay Zekâ ile OCR Görevlerini Çözmek
Yapay Zekâ ile OCR Görevlerini Çözmek

Yapay Zekâ ile OCR Görevlerini Çözmek

Yapay zekâ destekli OCR'nin veri çıkarımını nasıl dönüştürdüğünü, belge işlemlerini otomatikleştirdiğini ve finans, sağlık ve perakende gibi sektörlerde verimli...

3 dakika okuma
AI OCR +5
Optik Karakter Tanıma (OCR)
Optik Karakter Tanıma (OCR)

Optik Karakter Tanıma (OCR)

Optik Karakter Tanıma (OCR), taranmış belgeler, PDF'ler veya görseller gibi dokümanları düzenlenebilir ve aranabilir verilere dönüştüren dönüştürücü bir teknolo...

5 dakika okuma
OCR Document Processing +5
Fatura Veri Çıkarıcı
Fatura Veri Çıkarıcı

Fatura Veri Çıkarıcı

Bir Fatura Veri Çıkarıcı OCR Akışının, fatura verilerinin çıkarılması ve düzenlenmesinin otomasyonu ile finansal süreçlerinizi nasıl kolaylaştırabileceğini keşf...

2 dakika okuma
OCR Invoice Automation +3