OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 766
Kayıt: 16 Eyl 2003 08:54
Konum: istanbul

Mesaj gönderen Asri » 29 May 2007 09:15

@mrmarman,

Bu konuyla bende daha önce ilgilenmiştim. Oldukça yararlı ve yol gösterici bir makale olmuş. Paylaşım için teşekkür ederim.

iyi çalışmalar.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.

LeuKaeMia
Üye
Mesajlar: 4
Kayıt: 28 Ara 2006 05:28

gec kalmışım

Mesaj gönderen LeuKaeMia » 22 Ağu 2007 11:10

ama süper makale..herkese teşekkürler

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mrmarman » 12 May 2008 10:47

Uzun zamandır OCR hakkında mail ve özel mesaj alıyorum. Sürekli hazır kod isteniyor. Arkadaşlar bu başlıktaki kodlar çalışıyor. Sadece proje haline getirmeniz yeterli.

Neyse bugün bir mesaja daha verdikten sonra örnek proje koymaya karar verdim.

http://rapidshare.com/files/114450238/OCR_ABC.zip

Herşeyden önce unutmamanız gereken şey, bu proje sadece yaklaşım / sistem hakkında beyinlerde ışık yakmak içindir. Yani ABC'si diyoruz ya o manada.

Çalışmalarınızda başarılar dilerim.
Resim Resim

Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 02:10
Konum: İstanbul & Gebze Karışık

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen conari » 13 May 2008 01:54

Makaleyi de okudum programını inceledim.Ellerinize sağlık.Allah zihin açıklığı versin.
Sitede ki örnek resmini aldım. "EGUJG" yazan küçük harflerle bunlar tabi.
"J" yi "i" olarak çevirdi. diğerleri doğru. Acayip bir CPU Kullanımı var ayrıca.

Hoca, Konu ile alakasız da. sitenin formatı değişti bir de RSS e el atsan.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim

alvin
Üye
Mesajlar: 18
Kayıt: 03 Oca 2009 04:49

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen alvin » 03 Oca 2009 05:00

evet bende denedim ve aynı şekilde sadece j harfini i olarak gördü.hocam bu yanlışlık acaba j harfinin biraz yatık olmasından mı kaynaklanıyor...yani belki font styl ını fsitalic mi yapıp j yi karşılaştırmak lazım???bilemedim ki??

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mrmarman » 03 Oca 2009 10:52

tabii ki italik sorgu yapmazsanız italik harf tanıma uymaz.

Font.Style := [];

satırını bold, italik, bold+italik olarak da sorgulatmanız lazım.. Dediğim gibi etüd projedir hamuru şekillendirecek ve sırlayıp fırına koyacak kişi sizsiniz. :wink:
Resim Resim

alvin
Üye
Mesajlar: 18
Kayıt: 03 Oca 2009 04:49

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen alvin » 06 Oca 2009 02:06

peki onu italic yaptık diyelim(sonuçta 4 tane farklı yazış biçimi var).yalnız aklıma takılan bir soru daha var...biz bu resimde hangi font ailesinin kullanıldığını nasıl anlicaz...mesela corriernew var new tmies roman var bunun gibi yüzlercesi var.....bunun ne olduğunu nasıl anlayıpta programada ona göre bildiricez..yani mazur görün anlayamadım ondan soruyorum??

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mrmarman » 06 Oca 2009 08:39

Mazur görülecek durum yok sorunuzda haklısınız. Çünkü aynı captcha kod içerisinde her harfi farklı font olduğu durumlar da söz konusu, ve hatta windows'un standart fontları dışındaki özel tasarlanmış olanları dahi olabilir.

Bu işlemi yapmadan önce yazı fontlarına gözü aşina olan bir arkadaşınızdan yardım alabilirsiniz. Böylece bir kaç saniyede doğru font(lar)ı tespit edebilirsiniz.

Kendiniz deneme yanılma ile bulmak isterseniz bir tane Word dökümanı açınız, captcha koddaki karakterlerden gözünüze kestirdiğiniz karakteristik bir tanesini öncelikli referans almak üzere aynı ifadeyi yazınız. Gözünüzle karşılaştırınız, benzerlik görürseniz seçili font budur dersiniz.

Altını yeniden çizmeliyim, size verdiğim kod örneği sadece karşılaştırma tekniklerinden birisini örneklemek içindi. Fontların karakteristiklerini inceleyelerek ortak özelliklerini bularak çizgilerin açı ve yönünü anilz ile de bulmak mümkün. Bu konu yapay sinir ağlarına giriyor ve daha yetkin bir grafik / matematik bilgisi gerektiriyor.
Resim Resim

Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 06:16
Konum: İstanbul
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen G.Arkas » 21 Şub 2011 05:13

Döküman tam anlamıyla harika. ancak şöyle bir durum var

Ben aşağıda ki captcha daki

Resim

arka planı

Resim

şu şekilde temizliyorum ama bunları nasıl aynı hizaya getirebilirim fikri olan varmıdır acaba?
Resim

Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen vampir261 » 03 Kas 2011 01:04

Çok başarılı bir makale ve proje olmuş elinize sağlık, tam da buna benzer bir koda ihtiyaç duyduğum anda gökte ararken forumda buldum :D Ne kadar mutlu olduğumu kelimelerle anlatamam. Çok teşekkür ederim.
Anlatırsanız unuturum,
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.

mkysoft
Kıdemli Üye
Mesajlar: 2815
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mkysoft » 04 Kas 2011 06:54

G.Arkas yazdı:Döküman tam anlamıyla harika. ancak şöyle bir durum var

Ben aşağıda ki captcha daki

Resim

arka planı

Resim

şu şekilde temizliyorum ama bunları nasıl aynı hizaya getirebilirim fikri olan varmıdır acaba?
Harfleri aynı hizaya getirmek yerine ayırın bence. gözle görüldüğü kadarıyla aralarında boşluk var. yatayda hareket ettirdiğinizi varsaydığınız sanal bir çizgi ile resmi tarayın, çizgi boş alandaysa oradan bölün. parçalara ayrıdıktan sonra birleştirebilirsiniz de tabi.

erkankurtaga
Üye
Mesajlar: 59
Kayıt: 04 Oca 2009 06:36

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen erkankurtaga » 26 Tem 2013 04:54

Makalede emeği geçen herkese teşekkürler. Yalnız bu makalede verilen bilgiler ışığında https://medeczane.sgk.gov.tr/eczane/login.jsp adresindeki üretilen o güvenlik kodunu nasıl okuyabilirim. Yapılan örneklerle herhangi bir sonuca ulaşamadım. Herkese tekra teşekkürler.

McVeLeT
Üye
Mesajlar: 65
Kayıt: 22 May 2005 05:45
Konum: Bursa

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen McVeLeT » 08 Ara 2013 12:39

Evet makalenin yenisini bekleriz, mesela başlangıç olarak CAPTCHA kodunu formda göstermek gibi :mrgreen:
Bazen sesini duyurabilmen için,
Susman gerekir...

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mrmarman » 08 Ara 2013 01:49

@erkankurtaga
- Soruyu henüz gördüm. 26 Temmuz 2013 nere, 08 Aralık 2013... :o Çok gecikmiş bir cevap ama paylaşayım...

@McVeLeT bir şeyler yazmasa daha da göremezdim. Hatırlatma için sana da teşekkürler.

- HTML parametreleri için cennet MSDN'deki MSHTML referansları. Burayı karış karış okudum, herkese de tavsiye ederim. Web HTML parse edecekseniz kaynağından beslenebileceğiniz yer burasıdır. :idea:

Kullanımı :

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Const
  URL = 'https://medeczane.sgk.gov.tr/eczane/login.jsp';
begin
  WebBrowser1.Navigate( URL );
  while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;
  // Site açıldı. Şimdi Resmi alalım...
  AktifResimYukle_ARMAN(WebBrowser1, 'SayiUreten', Image1 );
end;
Procedure :

Kod: Tümünü seç

// Uses MSHTML
procedure AktifResimYukle_ARMAN( WebBrowser:TWebbrowser; strAra:String; Image:TImage );
var
  iSayac   : Integer;
  bmpResim : TBitmap;
begin
  if not Assigned( WebBrowser.Document ) then
    raise Exception.Create('HTML içerik gelmemiş...');
  if not Assigned ( (((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2)) then
    raise Exception.Create('HTML Gelmiş ama Body içermiyor...');
  for iSayac := 0 to ((((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2).getElementsByTagName('img') AS IHTMLElementCollection).Length-1 do
  begin
    if Pos( strAra, ((((((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2).getElementsByTagName('img') AS IHTMLElementCollection).item(iSayac, EmptyParam) as IHTMLElement) as IHTMLImgElement).src ) > 0 then
    begin
      bmpResim := TBitmap.Create;
        bmpResim.Height := ((((((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2).getElementsByTagName('img') AS IHTMLElementCollection).item(iSayac, EmptyParam) as IHTMLElement) as IHTMLImgElement).height ;
        bmpResim.Width  := ((((((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2).getElementsByTagName('img') AS IHTMLElementCollection).item(iSayac, EmptyParam) as IHTMLElement) as IHTMLImgElement).width ;
        (((((((WebBrowser.Document) as IHTMLDocument2).body as IHTMLElement2).getElementsByTagName('img') AS IHTMLElementCollection).item(iSayac, EmptyParam) as IHTMLElement) as IHTMLImgElement) as IHTMLElementRender).DrawToDC(bmpResim.Canvas.Handle);
        Image.Picture.Assign( bmpResim );
      bmpResim.Free;
      Break;
    end;
  end;
end;
Resim Resim

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4715
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine

Mesaj gönderen mrmarman » 08 Ara 2013 04:38

Merhaba.

- Bir de DLL ekliyorum. Bu DLL captca resmi çözümleyip String olarak döndürüyor.

- Özellikle DLL yaptım, tümüyle bu makale içerisinde anlatılan ve verilen kodlar ile oluşturuldu. :idea: Amaç, sizlerin elinizi taşın altına sokup bu işi kavramanız içindir. Kaynak kodları tümüyle bu makalede verildi. Tıpatıp aynı kodlar kullanıldı.

- İlerleyen tarihlerde bunu belki bir faaliyete dönüştürüp captcha resim çözümleme çalışması ve forum üyeleri için kaynaşma yemeğine dönüştürebiliriz. :bravo:

Kullanımı :
(1)- Önceki mesajımdaki teknik ile TImage nesnesine resmi alın.
(2)- Mesaj ekindeki DLL'yi proje dizininize kopyalayın ve projenizden aşağıdaki şekilde kod ile DLL'deki fonksiyonu çalıştırıp, sonucunuzu elde ederek kullanın.

Kod: Tümünü seç

Function OCRYap( OCRBitmap:TBitmap ): String; StdCall;
  External 'OCR_01.DLL';

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  strOCRSonuc : String;
begin
  strOCRSonuc := OCRYap( Image1.Picture.Bitmap ); 
  ShowMessage( strOCRSonuc );
end;
Dosya ekleri
OCR_01.rar
Medula Captcha Çözen DLL
(170.76 KiB) 202 kere indirildi
Resim Resim

Cevapla