/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);
}