如何使用Tesseract OCR从图像中提取多行?

时间:2013-03-04 10:16:48

标签: visual-studio-2010 visual-c++ ocr tesseract

  1. 我们已经传递了一个单行的图像,其中包含文本“Hello World”,Tesseract OCR完美地显示了结果“Hello World”。

  2. 但是当我们传递了多行文字的图像时

  3.   

    你好世界
      你好吗

    它没有显示任何内容。

    这是我们的代码:

    #include "stdafx.h"
    #include <iostream>
    #include <baseapi.h>
    #include <allheaders.h>
    #include <fstream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        tesseract::TessBaseAPI api;
    
        api.Init("", "eng", tesseract::OEM_DEFAULT);
        api.SetPageSegMode(static_cast<tesseract::PageSegMode>(7));
        api.SetOutputName("out");
    
        cout<<"File name:";
        char image[256];
        cin>>image;
        PIX   *pixs = pixRead(image);
    
        STRING text_out;
        api.ProcessPages(image, NULL, 0, &text_out);
    
        cout<<text_out.string();
    
        ofstream files;
        files.open("out.txt");
        files << text_out.string()<<endl;
        files.close();
    
        cin>> image;
        return 0;
    }
    

    输入1行

    输出1行

    输入2行

    输出2行

1 个答案:

答案 0 :(得分:0)

页面分割模式7将图像视为单个文本行。尝试3,这是全自动页面分割,但没有OSD(默认)。