Thursday, April 30, 2020

[XML] 使用 schema 檔 (xsd) 產生 C++ 和 VB 的類別 (class) 程式碼


[IDE] Visual Studio 2019 Community



產生 C++ Class (.cpp 和 .h ) - 使用 CodeSynthesis
1. 下載 CodeSynthesis 並完成安裝。
2. 在 Visual Studio 新增 C++ 專案。
3. 在專案中加入 xsd 檔,例如 hello.xsd。[專案](右鍵) -> [加入] -> [現有項目]
4. 開啟 xsd 檔的屬性對話盒。[xsd檔](右鍵) -> [屬性]
5. 在 xsd 檔的屬性對話盒,[一般] -> [項目類型] 選擇 [自訂建置工具]。
6. 點選 [套用],左側的 [XML 資料產生器工具] 變成 [自訂建置工具]



7. 在 [自訂建置工具] -> [命令列] 輸入

xsd cxx-tree --hxx-suffix .h --cxx-suffix .cpp --reserved-name access=parkingSpace_access --reserved-name link=lane_link --generate-serialization hello.xsd
    其中的 hello.xsd 就是前面加入的 xsd 檔案,如果 hello.xsd 與專案檔(.vcxproj) 不在相同的資料夾,則必須加入正確的檔案路徑 (可用相對路徑),否則無法編譯並產生錯誤訊息:


    必要時 xsd.exe 也應使用完整的路徑.


8.  在 [自訂建置工具] -> [命令列] 輸入

      hello.cxx; hello.hxx




9. 按 [確定] 關閉屬性對話盒。
10. [xsd檔](右鍵) -> [編譯(M) Ctrl+F7] 或按 Ctrl+F7 編譯 hello.xsd 檔並產生 hello.cpp 及 hello.h
11. 將產生的 hello.cpp 及 hello.h 檔加入專案。



產生 Visual Basic (VB) Class (.vb ) - 使用 Microsoft Visual Studio 的 xsd.exe
1. 開啟 Visual Studio 的 Developer Command Prompt (for VS 2019)。



2. 將工作資料夾切換至 xsd 檔所在的資料夾。
3. 輸入指令,即可產生 hello.vb 檔。
xsd hello.xsd /c /language:VB
4. 如果 xsd 裏使用 xs:import 匯入其他 xsd, 例如: helloA.xsd, 則必須在指令面加上 helloA.xsd 才可。

xsd hello.xsd /c /language:VB helloA.xsd

Wednesday, March 18, 2020

Monday, March 2, 2020

[Android] OCR - 使用 Tesseract


[參考資料]





[需要權限]

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

[Gradle]
build.gradle (Module:app)
implementation 'com.rmtheis:tess-two:9.0.0'
[使用方式]

public String runOcr( Bitmap bmp){

    final TessBaseAPI ocrApi = new TessBaseAPI();
    ocrApi.init( pathTessBase, "chi_tra");
    ocrApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO);
    ocrApi.setImage(bmp);
    String resString = ocrApi.getUTF8Text();

    ocrApi.clear();
    ocrApi.end();
    return  resString;
}



[註]
1. 訓練資料檔 chi_tra.traineddata 必須放在 pathThessBase/tessdata 資料夾下.

2. PageSegmentationMode = TessBaseAPI.PageSegMode.PSM_SINGLE_LINE 只可辨識單行文字

    PageSegmentationMode = TessBaseAPI.PageSegMode.PSM_AUTO 可辨識多行文字

[Qt] 執行檔需要哪些 Dll?

 1. 使用 Qt  的 windeployqt.exe 工具 (在 C:\Qt\Qt5.14.1\5.14.1\msvc2017\bin\)。   a. 把執行檔 myProgram.exe 放在某個資料夾。   b. 在檔案總管這個資料夾按 Shift 和滑鼠右鍵,開啟 Po...