自有screenshot 編譯.

/opt/bin/py3/bin/meson compile

patchelf --set-rpath /usr/local/lib/x86_64-linux-gnu:/opt/bin/tess/lib/ src/gnome-screenshot

代碼增加環境變量配置.

cat ../src/gnome-screenshot.c

setenv("TESSDATA_PREFIX","/opt/bin/tess/share/",1);

/opt/bin/py3/bin/meson compile

/dev/shm/gnome-screenshot/src/screenshot-application.c

增加ocr 模塊.


static void
ocr_clicked_cb (ScreenshotDialog      *dialog,
                 ScreenshotApplication *self)
{


  int width =   gdk_pixbuf_get_width(self->screenshot);
  int height = gdk_pixbuf_get_height (self->screenshot);
  unsigned char* image_data = gdk_pixbuf_get_pixels(self->screenshot);


   /*
    * /usr/include/leptonica/allheaders.h
    *
    * #include <leptonica/allheaders.h>
    */

    int bytesPerPixel = 4;
    struct Pix* image = pixCreate(width, height, 8 * bytesPerPixel);
    pixSetData(image, (unsigned char*)image_data);

    TessBaseAPI* api = TessBaseAPICreate();

    TessBaseAPIInit3(api, NULL, "chi_sim");
    TessBaseAPISetImage2(api, image);

    char* text = TessBaseAPIGetUTF8Text(api);
    printf("OCR Result:\n%s\n", text);

    TessBaseAPIEnd(api);
    pixDestroy(&image);


    int argc;
    char **argv;
    gtk_init(&argc, &argv);
    // gtk_init();
    // 創建窗口和文本視圖
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    GtkWidget *view = gtk_text_view_new();
    // 獲取文本緩衝區對象
    GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
    // 設置文本內容
    // const char *text = "Hello, world!\n";
    gtk_text_buffer_set_text(buffer, text, -1);
    // 將文本視圖添加到窗口中
    gtk_container_add(GTK_CONTAINER(window), view);
    // 顯示窗口和文本視圖
    gtk_widget_show_all(window);
    // 運行主循環
    gtk_main();




    free(text);

    // screenshot_save_to_clipboard (self);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章