2019年10月11日 星期五

[Python] Tkinter

import Tkinter
import tkMessageBox

top = Tkinter.Tk()
def hello():
   tkMessageBox.showinfo("Say Hello", "Hello World")

B1 = Tkinter.Button(top, text = "Say Hello", command = hello)
B1.pack()

top.mainloop()

[Python] OCR文字辨識

Install:
pip install pytesseract
pip install pillow

Tesseract-OCR
https://github.com/UB-Mannheim/tesseract/wiki



Edit:
C:\Python27\Lib\site-packages\pytesseract\pytesseract.py

modify path
tesseract_cmd = 'F:/Program Files/Tesseract-OCR/tesseract.exe'

python script:
#-*-coding:utf-8-*-

from PIL import Image,ImageEnhance
import pytesseract
import time


def pic_to_word(filepath,filename,resize_num,b):
    """
    :param filepath: 檔案路徑
    :param filename:圖片名
    :param resize_num:縮放倍數
    :param b:對比度
    :return:返回圖片識別文字
    """
    try:
        time1 = time.time()
        im = Image.open(str(filepath)+str(filename))
        # 影象放大
        im = im.resize((im.width * int(resize_num), im.height * int(resize_num)))
        # 影象二值化
        imgry = im.convert('L')
        # 對比度增強
        sharpness = ImageEnhance.Contrast(imgry)
        sharp_img = sharpness.enhance(b)
        content = pytesseract.image_to_string(sharp_img, lang='chi_sim')
        time2 = time.time()
        print('total time%s s' % (time2 - time1))
    except Exception as e:
        print("{0}".format(str(e)))

    return content


if __name__ == '__main__':
    filepath="C:/Users/lc_lee/Desktop/"
    filename="a2.png"
    resize_num = 2
    b = 2.0
    content=pic_to_word(filepath,filename,resize_num,b)
    print(content.encode(encoding="utf-8", errors="strict"))
    # print(content.encode("utf8").decode("cp950", "ignore"))


# chcp 65001

• https://www.itread01.com/content/1547721909.html
• https://blog.csdn.net/wwj_748/article/details/78109680

2019年6月8日 星期六

[Nodejs] node-adodb 使用Electron建置執行檔錯誤

在使用Electron + node-adodb時,在local端運作正常,但編譯過後會執行時出現錯誤提示:
Spawn C:\Windows\SysWOW64\cscript.exe error

此程式是透過調用Windows下內建cscript.exe來進行解析mdb檔案,而調用的過程中所給的參數如下:

const args = [Proxy.adodb, '//E:JScript', '//Nologo', '//U', '//B', command];

其中 Proxy.adodb = require.resolve('./adodb')

這個路徑是造成此error最主要的原因,在調用cscript.exe時,要傳遞js腳本作為參數,而compile後的 adodb.js 這個檔案,被封裝於asar內部,無法讓外部程式cscript.exe取得內容。我的解決方法是程式內部讀取adodb.js文件,再進行轉存一份script.js到公開目錄下,供外部程式讀取。

fork了一份專案進行修改: https://github.com/lclee3390/node-adodb

npm install:
npm install --save https://github.com/lclee3390/node-adodb.git

[Nodejs] Electron建立可執行檔


一、Electron


可使用html作為GUI介面的設計,進行配置後也可支援Angular、React、Vue相應的環境,再透過electron packager 可以打包成exe,或者,使用electron builder建置安裝檔。

若是使用Angular,可直接clone angular-electron這個倉庫,裡面已將各版本的環境都建置模板了。

又或者,想要建置一個非常基礎的應用程式,clone 官方的quick start來進行修改會快速很多,但此專案並不包含electron packager,需另外進行配置。


二、Electron Packager


npm install electron-packager --save-dev

  • 在package.json中的script加入指令

"build" :  "electron-packager ./ appname --out ./dist --overwrite"


三、Electron Builder


npm install electron-builder --save-dev



  • 配置package.json


"build": {
    "appId": "com.xxx.app",
    "mac": {
      "target": ["dmg","zip"]
    },
    "win": {
      "target": ["nsis","zip"]
    }
},
"scripts": {
     "builder": "electron-builder --win --x64"
}


2019年6月7日 星期五

[Nodejs] node-adodb 讀取.mdb檔案

  • https://www.npmjs.org/package/node-adodb
  • Simple Query:

const ADODB = require('node-adodb');
const connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;');

connection
  .query('SELECT * FROM TABLE_NAME') // query method return Promise
  .then(data => {
    console.log(JSON.stringify(data, null, 2));
  })
  .catch(error => {
    console.error(error);
  });

  • 依據Access版本不同,在ADODB.open時指定不同的連接字串
    • Access 2000-2003 (*.mdb): 
      • Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;
    • Access > 2007 (*.accdb): 
      • Provider=Microsoft.ACE.OLEDB.12.0;Data Source=adodb.accdb;Persist Security Info=False; 
      • Provider=Microsoft.ACE.OLEDB.15.0;Data Source=adodb.accdb;Persist Security Info=False;




2018年12月18日 星期二

[VSCode plugin] Quokka 編輯器中即時顯示console內容

Quokka.js這個外掛能在編輯器中就直接印出內容,可以從圖片中看到藍色字的部分就是由外掛即時印出的內容。



Control +Shift +P 後輸入Quokka就可以選擇新增一個Quokka關聯的js檔案New JavaScript File,如果要使用現有檔案,則選擇Start on Current File



另外此plugin 還提供了Pro版本,
1、可使用他所定義的註解 /*?*/顯示結果或/*?.*/顯示執行速度
2、可以自動關聯js檔案啟動quokka功能、提示缺少的package並可以快速install
3、無限制的value階層延伸查詢
4、可import檔案,並在import的檔案有更動時自動更新依賴的值

更詳細的Pro功能可以看這個官方提供的網址 : https://quokkajs.com/pro/