3 回答

TA貢獻1891條經驗 獲得超3個贊
您必須首先從 imagePath 制作一個圖像對象。
就我而言,這是通過使用著名的 opencv 來完成的。然后,使用 SetImage 功能。
void detectJpn(cv::Mat& img)
{
char *outText;
// Create Tesseract object
tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
ocr->Init(NULL, "jpn", tesseract::OEM_TESSERACT_ONLY);
// Set Page segmentation mode to PSM_AUTO (3)
ocr->SetPageSegMode(tesseract::PSM_AUTO);
ocr->SetImage((uchar*)img.data, img.size().width, img.size().height, img.channels(), img.step1());
// Run Tesseract OCR on image
outText = ocr->GetUTF8Text();
// print recognized text
std::cout << outText << std::endl; // Destroy used object and release memory ocr->End();
//ocr->Clear();
//ocr->End();
delete ocr;
ocr = nullptr;
}
int main(int argc, char *argv[])
{
cv::Mat img = imread(argv[1], cv::IMREAD_UNCHANGED);
detectJpn(img);
return 0;
}

TA貢獻1851條經驗 獲得超3個贊
您正在向非 UTF-8 的窗口發送 UTF-8 文本。您需要在顯示之前進行轉換
這是可能導致問題的代碼(因為它嘗試使用您無法控制的默認系統編碼);byte[] bytes = System.Text.Encoding.Default.GetBytes(result);
您是否嘗試在那里使用 Encoding.UTF8 ?
如果單獨這樣做不起作用,請嘗試在下面的行中將 Encoding.UTF8 更改為 Encoding.Default。
- 3 回答
- 0 關注
- 220 瀏覽
添加回答
舉報