OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
gec kalmışım
ama süper makale..herkese teşekkürler
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
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.
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
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..



Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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??
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
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.

Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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??
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
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.
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
Döküman tam anlamıyla harika. ancak şöyle bir durum var
Ben aşağıda ki captcha daki

arka planı

şu şekilde temizliyorum ama bunları nasıl aynı hizaya getirebilirim fikri olan varmıdır acaba?
Ben aşağıda ki captcha daki

arka planı

şu şekilde temizliyorum ama bunları nasıl aynı hizaya getirebilirim fikri olan varmıdır acaba?
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
Ç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
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.
Gösterirseniz hatırlarım,
Yaptırırsanız anlarım.
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.G.Arkas yazdı:Döküman tam anlamıyla harika. ancak şöyle bir durum var
Ben aşağıda ki captcha daki
arka planı
şu şekilde temizliyorum ama bunları nasıl aynı hizaya getirebilirim fikri olan varmıdır acaba?
-
- Üye
- Mesajlar: 62
- Kayıt: 04 Oca 2009 06:36
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
Evet makalenin yenisini bekleriz, mesela başlangıç olarak CAPTCHA kodunu formda göstermek gibi 

Bazen sesini duyurabilmen için,
Susman gerekir...
Susman gerekir...
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
@erkankurtaga
- Soruyu henüz gördüm. 26 Temmuz 2013 nere, 08 Aralık 2013...
Ç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.
Kullanımı :
Procedure :
- Soruyu henüz gördüm. 26 Temmuz 2013 nere, 08 Aralık 2013...

@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.

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;
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;
Re: OCR'ye Giriş - CAPTCHA Kodların Çözümlenmesi üzerine
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.
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.
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.
- 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.

- İ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.

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.06 KiB) 472 kere indirildi