ics/test/
ns=20 # мінімум для числа символів в широкому ділянці тексту;
aw=15 # Ворнінг для числа всіх ділянок;
bw=7 # Ворнінг для числа всіх широких ділянок;
cw=700 # Ворнінг для загального числа символів у всіх ділянках;
prfx= zz_ # Префікс для імен рез. файлів;
fmts=( .bmp raquo ;, .jpg raquo ;, .jpeg raquo ;, .gif raquo ;, .png ) # список оброблюваних форматів файлів;
# початок рядка для html звіту;
rpt= '
lt; html gt;
lt; head gt;
lt; title gt; Звіт lt;/title gt;
lt; META http-equiv= Content-Type content= text/html; charset=Windows - 1251 gt;
lt;/head gt;
lt; body style= background: # F5F5DC; gt;
lt; center gt;
lt; h3 gt; Звіт lt; br gt;
по виявленню тексту в растрових графічних файлах lt;/h3 gt;
lt;/center gt;
lt; table gt;
lt; tr style= background-color: # 999999; gt; lt; td gt; amp; nbsp; lt;/td gt; lt;/tr gt;
'PIL import Imagetext_detector (pic_dir, fn):
try:
fp=open (pic_dir + fn, rb )
io=Image.open (fp)
io.load ()
fp.close ()
except:
return - 1
sz=600
c_min=35
dw=24
dh=24
d8=((1,1), (1,0), (1, - 1), (0, - 1), (- 1, - 1), (- 1,0 ), (- 1,1), (0,1))
w, h=io.size
global rpt
rpt += lt; tr gt; lt; td gt; Файл: + Fn + lt;/td gt; lt;/tr gt; n
rpt += lt; tr gt; lt; td gt; Розміри растра: + Str (w) + x + Str (h) + lt;/td gt; lt;/tr gt; n
if min (w, h) gt; sz:
rsz=sz * 1.0/min (w, h)
w=int (0.5 + w * rsz)
h=int (0.5 + h * rsz)
io=io.resize ((w, h), Image.ANTIALIAS)
rpt += lt; tr gt; lt; td gt; Імідж стиснуто до розмірів: + Str (w) + x + Str (h) + lt;/td gt; lt;/tr gt; n
im=io.convert ( L )
if io.mode!= RGB :
io=io.convert ( RGB )
io2=io.copy ()
lum=[[0] * w for i in range (h)]
nei=[[0] * w for i in range (h)]
sm=0
for i in range (h):
for j in range (w):
lum [i] [j]=im.getpixel ((j, i))
sm +=lum [i] [j]
io2.putpixel ((j, i), (111,111,111))
sr=sm * 1.0/h/w
c=0
for i in range (h):
for j in range (w):
c +=abs (sr - lum [i] [j])
c=c/h/w
c=int (0.5 + c)
c=max (c, c_min)
def res_image (r):
for ri in r:
for p in range (ri [0], ri [1] + 1):
for q in range (ri [2], ri [3] + 1):
io2.putpixel ((q, p), io.getpixel ((q, p)))
f_out=open (pic_dir + prfx + fn, wb )
io2.save (f_out)
f_out.close ()
def get_nei ():
for i in range (1, h - 1):
for j in range (1, w - 1):
y=0
t=set ([])
for k in range (8):
if abs (lum [i] [j] - lum [i + d8 [k] [0]] [j + d8 [k] [1]]) gt; c:
y +=1
t.add (k)
if y in (3,):
if min (t) + (y - 1) == max (t) or
t == set ((6,7,0)) or t == set ((7,0,1)):
nei [i] [j]=y
else:
nei [i] [j]=-y
else:
nei [i] [j]=y
def stroke_calc (p1, q1):
p2=min (h - 1, p1 + dh)
q2=min (w - 1...