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 关注
- 189 浏览
添加回答
举报