27 8月 2019

Python 2 / 3 Rounding 比較

由於 Python2.7 的末日愈來愈近了,因此敝公司最近升級 Python 至 3.6.8 (有一些考量因素,所以沒有升至3.7.x)。用熟悉的 Python 2.7 開發也有一段時間了,當初顧慮的 Performance, 以及 module 支援度都有顯著的改善。現在絕對是個很好的升級時機。
敝公司開發的系統,有一些是跟帳務系統相關的功能,所以金錢相關的 Database 欄位都是用 Decimal 處理,在從 Python2.7 升到 Python3 ,發現 rounding 的機制有些改變,在這邊分享一下我的小小研究心得。(測試以 3.6.8 為主,但是 3.7 以上的版本應該也適用)

在 AWS Lambda 上執行 Tesseract OCR

最近因為公司爬蟲需求,需要破解驗證碼,因緣際會接觸到 Tesseract ,發現是個不錯的 tool,還有 python library 可以用😍。在不做任何 Image 的 Preprocess,或是 Traing 的情況下,已經可以有五、六成的成功率(我好容易滿足啊XD),由於爬蟲架構的需求,我們覺得 Tesseract 很適合放到 Cloud 上,當成一個 Service 執行,因此,就想在 AWS Lambda 上把它跑起來。

簡單來說,需要以下幾個流程才能把 Tesseract + pytesseract 執行起來
  • Lambda Function - pytesseract
  • Lambda Layer - Tesseract
  • Deploy to Lambda - by Serverless
其實之前有寫過一些簡單的 Lambda (就是單純的 Python code)。但是,一想到這個新的獨立 Service,要重新設定一次所有的東西,還要自己 build 一些 module 就覺得麻煩,所以這次用了一個新的 Tool — serverless framework ,輕輕鬆鬆搞定 AWS Lambda Deploy 的流程。