علی شکیبا

دفتر یادداشت دیجیتال برای هر چیز مفید!

۱ مطلب در آذر ۱۳۹۲ ثبت شده است

امروز عصر یکی از نزدیکان با من تماس گرفت و راهکاری رو برای حل مشکلش می خواست. ایشون تمایل داشت تا چندتا سرویس که خدمات ویدئو کنفرانس را ارائه می کنند، نظیر Skype، GoogleHangout و مانند این ها رو از لحاظ کیفیت خط ارتباطاتی و مولفه های کیفیت شبکه ای مورد بررسی قرار بدهند. همه کارها رو انجام داده بودند، ولی استخراج داده‌ها براشون دردسر شده بود. کلیت کار این بود که یکی از کاربران یک Stopwatch رو با دقت صدم ثانیه اجرا می کرد و فیلمش رو ذخیره می کرد. حالا یک طرف فیلم رو پخش می کرد و طرف دیگه همون فیلم رو دریافت می کرد و با یه ترفندی دوباره به فرد مقابل ارسال می کرد!!!! از این ها بگذریم ...

این بنده خدا می خواست از میز کارش یه اسکرین شات مثلا هر یک ثانیه یه بار و برای مثلا 10 دقیقه بگیره و بعد بشینه دونه به دونه داده ها رو وارد Excel کنه! یعنی 600 تا عکس! من این اسکریپت پایتون رو برای ایشون، البته خیلی کد تمیز و بهینه‌ای نیست و فقط هدفم انجام کار بوده!، نوشتم که ابتدا عکس‌ها رو می‌گیره و بعد از اون، دونه به دونه اون ها رو با استفاده از موتور متن باز OCR به نام tesseract پردازش می کنه و در یه فایل ذخیره می کنه.

پی نوشت: توضیحات اصلا کافی نیست! فقط برای این هست که یادم نره چه کار کردم و بعدا سر فرصت تکمیلش می کنم.

#!python

import subprocess
import Image
import ImageGrab
import time
import os
name = 'screen2'
path = r'D:\temp\ali'
os.chdir(path)
i = 0
n = 60 * 10# 60 SECONDS * 10 MINUTES
dead = 1 # sleep for dead seconds
list = []
out = []
x = 166
y = 40
h = 1108
w = 65
while (i < n) :
  img = ImageGrab.grab()
  s = os.path.join(path, name + '_' + str(i) + '.jpg')
  list.append(name + '_' + str(i) + '.jpg')
  i = i + 1
  img.crop((x,y,h,w)).save(s)
  time.sleep(dead)
 
temp = "temp" #os.path.join(path, "temp")
for item in list :
  p = subprocess.Popen(["tesseract", item, temp , "-psm 7"], cwd=path)
  p.wait()
 
  print ["tesseract", item + " " + temp + " " + "-psm 7"]
  f = open(os.path.join(path, "temp.txt"))
  for line in f.readlines():
    out.append(line)
  f.close()

outf = open(os.path.join(path, name + "_output.txt"), "a+")
for item in out:
  outf.write(item + "\n")
outf.close()
۰ نظر موافقین ۰ مخالفین ۰ ۲۸ آذر ۹۲ ، ۲۳:۰۲
علی شکیبا