ئۇيغۇرچە OCR ھەققىدە مېنىڭ تەجرىبىلىرىم (1)
ئاپتۇرى: Mars36
كىرىش سۆز ئەسسالامۇ ئەلەيكۇم قېرىنداشلار! OCR تېمىسى بىلىك، ئىنتىل، ئالىم ئەھەت تور بېكەتلىرىدە كۆپ قېتىم قىزىق باشلىنىپ سوغۇق ياكى نەتىجىسىز ئاخىرلاشقان ئىدى… مەنمۇ تەكرار ئويلاندىم، يازماي دېدىم. نېمىشقا؟ 1. بۇ تېما باشقا ئادەتتىكى پىروگرامما لايىھەلەشتەك ئاددىي ئىش بولمىغاچقا بىلگەنلەر ئالدىراشلىق ياكى ئىچى تارلىق (بۇ-كۆپ ساندىكى ئۇيغۇر كومپيۇتېرچىلىرىمىزدا مەۋجۇت بولغان ئۆز مەنپەئەتىنى قوغداش نامىدىكى چىدىماسلىق، دەپ بىلىمەن. ئەمەلىيەتتە تەجرىبىنى ئايىمايمۇ نان تېپىپ يېگىلى بولىدۇ) سەۋەبىدىن، بىلمىگەنلەر چۈشەنمىگەنلىكتىن پىكىر قاتناشتۇرماسلىق بىلەن نەتىجىسىز قېلىشى مۇمكىن. 2. بۇنى مەنمۇ تولۇق ئەمەلگە ئاشۇرۇپ بولالمىغاچقا مۇكەممەل بولمىغان تەجرىبىنى داستىخانغا چىقارماي دېگەن ئىدىم. ئۇنىڭ ئۈستىگە مەندىن تەجرىبىلىك، بىلىملىك، مەخسۇس كەسىپتە ئوقۇغان (مەن ئالىي مەكتەپنى رەسىم كەسپىدە پۈتتۈرگەن، كومپيۇتېر ۋە پىروگرامما لايىھەلەشنى ئۆزلۈكۈمدىن ئۆگەنگەن، ئۇستازىم يوق)، دىپلومى يوغان ۋە كۆپ ئۇستاملار بىزدە نۇرغۇن تۇرسا ماڭا سۆزلەپ نېمە كەپتۇ، دەپ ئويلىغان يېرىممۇ بار. ئەمما بىر نەچچەيلەننىڭ تەكرار تەكلىپى بىلەن كۆپچىلىك ئورتاق تىرىشىپ باقساق بەلكىم نەتىجىسى چىقىپ قېلىشىمۇ مۇمكىن، دېگەن ئۈمىدتە يەنىلا بۇنى يېزىپ ئولتۇرۇپتىمەن. خوش، ئەسلىي تېمىغا كېلەيلى (ناۋادا ئىزاھات بېرىلمىسە تېمىدىكى OCR پۈتۈنلەي ئۇيغۇر يېزىقىغا قارىتىلغان). تۆۋەندىكى مەزمۇنلار توغرىلىق تەكرار توختالمايمىز: 1. OCRنىڭ نېمىلىكى، ھازىرقى ئەھۋالى ۋە ئۇيغۇر يېزىقىغا مۇناسىۋەتلىك OCRنىڭ تەرەققىياتى؛ 2. كومپيۇتېردا رەسىم بىر تەرەپ قىلىشقا مۇناسىۋەتلىك مۇھىم ماتېماتىكىلىق ئۇقۇملار (كوردىنات، نۇقتا، سىزىق…). ناۋادا يېڭى ئۆگەنگۈچى بولسىڭىز يۇقىرىقى مەزمۇنلار توغرىلىق چۈشەنچىگە ئىگە بولۇش ئۈچۈن تۆۋەندىكى ئادرېسلارغا مەرھەمەت (يازما بىر يىل ئىلگىرى دەسلەپكى قەدەمدە يېزىلغان، بەزى ئۇلانمىلار ئېچىلماسلىقى مۇمكىن): forum.php?mod=viewthread&tid=29865
OCR ئېنگىلىزچە Optical Character Recognition دېگەن سۆزنىڭ قىسقارتىلمىسى بولۇپ، خەت بويچە تەرجىمە قىلسا ئوپتىكىلىق ھەرپ-بەلگىلەرنى تونۇش دېگەنلىك بولىدۇ. ئاددىيلاشتۇرۇپ ئېيتقاندا كىتاپ، قەغەزلەردىكى يېزىقنى رەسىم ھالەتتە كومپىيۇتېرغا ئەكىرىپ ئۇنى OCR سىستېمىسىدا تېكىستكە ئايلاندۇرغىلى بولىدۇ. ئېنگىلىزچە، خەنزۇچە ... قاتارلىق تىللارنىڭ بۇ تېخنىكىسى پىشىپ يىتىلگەن بولۇپ، يانفوندا خالىغان يەرنى رەسىمگە تارتىپ، ئۇنىڭدىكى خەتنى تېكىستە ئايلاندۇرۇشقا بولىدۇ.
ئەمدى گەپنى OCRنىڭ قەدەم-باسقۇچلىرى ۋە ھالقىلىق تېخنىكىلاردىن باشلايلى. بىر پارچە رەسىمدىكى يېزىقنى تەھرىرلىگىلى بولىدىغان يېزىققا ئايلاندۇرۇشنىڭ ئەقەللىي قەدەم باسقۇچلىرى تۆۋەندىكىدەك بولىدۇ:
1. رەسىمنى ئەڭ مۇۋاپىق يەككە رەڭ ھالىتىگە ئۆزگەرتىش
2. بەت يۈزىنى ئانالىز قىلىش 1) قىڭغىر سايىلەنگەن بولسا تۈزلەش؛ 2) بەت قىرىدىكى ئارتۇق قىسىمنى قالدۇرۇش؛ 3) يېزىق، رەسىم (جەدۋەل) قىسمىنى ئايرىش؛ 4) داغ نۇقتىلارنى يوقىتىش؛
3. يېزىق تونۇش 1) يېزىق قىسمىنى قۇرلارغا ئاجرىتىش؛ 2) قۇرلارنى بۆلەكلەرگە ئاجرىتىش؛ 3) بۆلەكلەرنى ھەرپكە پارچىلاش؛ 4) ھەرپلەرنى بىرىكتۈرۈپ (ۋە ئىملا تەكشۈرۈپ) سۆزگە ئايلاندۇرۇش؛ 5) بەتنى ئەسلى ھالىتى بويىچە (جەدۋەل، رەسىملەرنى جايىغا قويۇپ Word، Txt دېگەندەك شەكىلدە) ھۆججەتكە چىقىرىش. قانداق، يېزىق تونۇتۇش سىز ئويلىغاندەك ئاددىيمىكەن؟ بۇ تېخنىكىنىڭ قەدەم-باسقۇچلىرى كۆپ بولغاننىڭ ئۈستىگە ھەر بىر باسقۇچتىكى توسالغۇ بىر-بىرىدىن قېلىشمىغۇدەك دەرىجىدە قىيىنچىلىقنى «باغاشلاپ» تۇرغاچقا ھازىرغىچە ھەل بولماي كېلىۋاتىدۇ. بۇلارنىڭ ئىچىدە ئەڭ قىيىن ھەم ئەڭ ھالقىلىقى ھەرپكە پارچىلاش جەريانىدۇر. ناۋادا ئاشۇ ھەل بولمىسا ئۇنىڭ ئالدى-كەينىدىكى باسقۇچلار قانچىلىك تەجرىبە ۋە تېخنىكا تەلەپ قىلىش ئاساسىدا روياپقا چىقسۇن، نەتىجە يەنىلا نۆلگە تەڭ. ئۇنىڭ ئۈستىگە ئۇيغۇرچە يېزىقنى ھەرپكە پارچىلاش جەريانىدىن باشقىسىغا ماتېرىيال، تەجرىبە خاتىرىلىرى ھەر ھالدا توردا تېپىلىدۇ، باشنى تاشتەك قاتۇرۇۋاتقان ھەرپ پارچىلاشقا ئامال تاپماي OCR پۈتۈشى مۇمكىن ئەمەس. خوش، بىر پارچە رەسىمنى ئاچقاندىن كېيىن ئۇ ئۇيغۇرچە يېزىقتىكى مەزمۇنلار بولغان رەسىممۇ ياكى بىرەر مەنزىرە، ئادەم، نەقىشنىڭ رەسىمىمۇ، دېگەنگە ھۆكۈم قىلىپ ئاندىن ئۇنى تونۇتىدىغان جەرياننى ئەمەلگە ئاشۇرۇشمۇ تەس ئەمەس (ئەمما مۇھىم ئەمەس). يەنە تېمىنىڭ 1-، 2- باسقۇچلىرىدىكى بەزى تارماق تېخنىكىلارنىمۇ قويۇپ، تۆۋەندىكى ئاساستا تەجرىبە قىلىپ باقايلى (ناۋادا قىزىققۇچىلار بولسا باشقىسىنىمۇ سىناپ باقارمىز): 1. رەسىمنى يەككە رەڭ ھالىتىگە كەلتۈرۈش؛ 2. قىڭغىر بەتنى تۈزلەش ۋە يېزىق، سۈرەت (جەدۋەل) قىسمىنى ئايرىش؛ 3. يېزىق قىسمىنى قۇرلارغا ئاجرىتىش؛ 4. قۇرلارنى بۆلەكلەرگە ئاجرىتىش؛ 5. بۆلەكلەرنى ھەرپكە پارچىلاش. يۇقىرىقىلار ئۇيغۇرچە مەزمۇن بولغان بىر بەت رەسىمنى ئاساس قىلىپ تەجرىبە قىلىنىدۇ. تېمىنىڭ قىزىق يېرىگە ئەمدى كەلدۇق (بەزىلىرىمىز ئۈچۈن تەييار كودنىڭ ئۇچراپ قېلىشى بەلەن ئىش بولسا، ماڭا مەسىلىنى ئەمەلىي تەھلىل قىلىش ھەقىقىي مەنىلىك، قىزىق ئىش).
1. رەسىمنى يەككە رەڭ (黑白) ھالىتىگە كەلتۈرۈش بۇنداق قىلىشتىكى مەقسەتنى «ئېقى قەغەز، قارىسى سىياھ (خەت)»كە يىغىنچاقلاشقا بولىدۇ. يەنى، بىز پەقەت قارا رەڭنى ئانالىز قىلىپ يېزىق تونۇيمىز (كىتاب كۆرگەندىمۇ ھېچقاچان كىتابنىڭ ئاق قىسمىنى ئوقۇمايمىز ئەمەسمۇ). ئەسلى رەسىم ۋە يەككە رەڭ ھالىتىگە كەلتۈرۈلگىنى:
--> بۇ باسقۇچتا رەسىمنى ئانالىز قىلىپ ھەر بىر نۇقتىنىڭ رەڭ قىممىتى 255 (ئاق) ياكى 0 (قارا) بولغان ھالەتكە كەلتۈرىمىز. كومپيۇتېردا رەسىمنىڭ بىر نۇقتىسىدىكى رەڭ قىزىل (Red)، يېشىل (Green)، كۆك (Blue) رەڭلەرنىڭ 1-255كېچە بولغان نىسبىتى بويىچە ئىپادىلىنىدۇ. يەنى:
Red=RGB(255,0,0) Green=RGB(0,255,0) Blue=RGB(0,0,255) Cyan=RGB(255,255,0) Magenta=RGB(255,0,255) Gray=RGB(127,127,127) Black=RGB(0,0,0) White=RGB(255,255,255) بۇنى تۆۋەندىكىدەك ئالگورىزم (ھېسابلاش ئۇسۇلى 算法Algorithm) ئارقىلىق ئەمەلگە ئاشۇرىمىز (تەقلىدىي كود 伪代码):
- 'VB.NET
- Dim myColor As Color
- Dim gray As Integer
- For x = 0 To Picture.Width - 1
- For y = 0 To Picture.Height - 1
- myColor = Picture.GetPixel(x, y)
- gray = myColor.R * 0.3 + myColor.G * 0.59 + myColor.B * 0.11
- If gray > 127 Then gray = 255 Else gray = 0
- Picture.SetPixel(x, y, Color.FromArgb(gray, gray, gray))
- Next y
- Next x
مەزمۇننى كۆچۈرۈۋېلىش- //C#
- Color myColor;
- int gray;
- for (int x = 0; x <= Picture.Width - 1; x++)
- {
- for (int y = 0; y <= Picture.Height - 1; y++)
- {
- myColor = Picture.GetPixel(x, y);
- gray = (int)(myColor.R * 0.3 + myColor.G * 0.59 + myColor.B * 0.11);
- if (gray > 127)
- gray = 255;
- else
- gray = 0;
- Picture.SetPixel(x, y, Color.FromArgb(gray, gray, gray));
- }
- }
مەزمۇننى كۆچۈرۈۋېلىش يۇقىرىقى رەسىمدە چەك قىممەت(阀值) 160 قىلىپ ئۆزگەرتىلدى، كودقا بولسا كۆڭۈلدىكى قىممەت 127 ئىشلىتىلگەن (يەنى، مەلۇم نۇقتىنىڭ رەڭ قىممىتى مۇشۇ قىممەتتىن چوڭ بولسا ئاق، كىچىك بولسا قارا رەڭگە ئۆزگەرتىمىز). بۇ -ئەمەلىي رەسىمگە ئاساسەن يەككە رەڭگە ئۆزگەرتىشتىكى ئەڭ مۇۋاپىق چەك قىممەتنى تېپىش. ئەمما ماسلىشىشچان چەك قىممىتىنى تېپىش ئەمەس. ماسلىشىشچان چەك قىممەتتە بىر پارچە رەسىمدىكى ئوخشىمىغان قىسىملار ئوخشىمىغان چەك قىممەتتە يەككە رەڭ ھالىتىگە كەلتۈرۈلىدۇ (بۇنداق بولمىغاندا نۇر چۈشۈش تەكشى بولمىغان بەتلەرنىڭ مەلۇم قىسمىدىكى يېزىق تونۇلماي قالىدۇ).
بۇنى ئويلىشىش تېمىنىڭ مەركىزىي نىشانىغا ئالاھىدە مۇناسىۋىتى بولمىغاچقا كېيىنگە قالدۇرۇلدى. يۇقىرىقى رەسىمنىڭ چەك قىممىتىنى 160 قىلىپ بېكىتىپ تۇرايلى. ئۆزىمىز بىلىدىغان پىروگرامما تىللىرىنىڭ بىرىدە يۇقارىقىنى ئەمەلگە ئاشۇرۇپ باقامدۇق؟
پىروگىراممىغا قىزىقىدىغانلار ئاستىدىكى چىپار كود(ئىككىلىك كود)نى سايىلەپ ياكى «شەرەر»، «xarar_09» دەپ ئىزدىتىپ شەرەر سالونىنى قىتىۋالساڭلار بولىدۇ.
مەنبە: شەرەر تورى |