本文档描述了 Tesseract OCR 系统中可用的可视化工具,主要围绕 ScrollView 框架。这些工具通过基于客户端-服务器的可视化系统,使开发人员能够可视化 OCR 处理阶段、调试识别算法以及显示中间结果。
ScrollView 可视化系统由一个客户端-服务器架构组成,其中:
ScrollView 为创建图形窗口提供了全面的接口,其功能包括渲染文本、绘制形状、显示图像以及通过鼠标和键盘事件处理用户交互。
来源:src/viewer/scrollview.h18-30 src/viewer/scrollview.cpp19-30
来源:src/viewer/scrollview.cpp44-67 src/viewer/scrollview.cpp274-318
ScrollView 通信遵循特定模式
系统会初始化一个后台线程,该线程持续接收来自服务器的消息,然后将这些消息分派给相应的事件处理程序。
来源:src/viewer/scrollview.cpp88-185 src/viewer/scrollview.cpp244-247
要创建可视化窗口,您需要实例化一个 ScrollView 对象。
参数包括:
来源:src/viewer/scrollview.h168-178 src/viewer/scrollview.cpp249-268
ScrollView 提供了全面的绘图函数集。
| 功能 | 描述 |
|---|---|
Pen() | 设置轮廓线的画笔颜色。 |
Brush() | 设置形状的填充颜色。 |
Line() | 绘制连接两点的线。 |
Rectangle() | 绘制指定角的矩形。 |
Ellipse() | 绘制具有中心和尺寸的椭圆。 |
Text() | 在指定位置渲染文本。 |
Draw() | 显示图像。 |
SetCursor()/DrawTo() | 通过从当前位置绘制来创建折线。 |
颜色可以使用预定义的枚举值(例如,ScrollView::RED)或 RGB 值指定。
来源:src/viewer/scrollview.h228-280 src/viewer/scrollview.cpp482-643
ScrollView 通过 SVEventHandler 接口提供了事件驱动的交互模型。
ScrollView 支持的事件类型
| 事件类型 | 描述 |
|---|---|
SVET_DESTROY | 窗口被用户销毁 |
SVET_EXIT | 最后一个窗口关闭 |
SVET_CLICK | 鼠标左键单击 |
SVET_SELECTION | 区域选择 |
SVET_INPUT | 键盘输入 |
SVET_MOUSE | 鼠标移动(按下按钮时) |
SVET_MOTION | 鼠标移动(无按钮) |
SVET_HOVER | 鼠标静止 |
SVET_POPUP | 弹出菜单命令 |
SVET_MENU | 菜单栏命令 |
处理事件:
SVEventHandler 的类。Notify(const SVEvent* event) 方法。AddEventHandler() 将处理程序注册到 ScrollView 窗口。来源:src/viewer/scrollview.h53-65 src/viewer/scrollview.h92-101 src/viewer/scrollview.cpp320-353
ScrollView 支持通过 SVMenuNode 类来创建菜单栏和弹出(上下文)菜单。
创建菜单系统:
SVMenuNode。BuildMenu(scrollview, true) 构建菜单栏,或使用 BuildMenu(scrollview, false) 构建弹出菜单。菜单事件通过事件处理系统以 SVET_MENU 或 SVET_POPUP 事件的形式到达。
来源:src/viewer/svmnode.h20-26 src/viewer/svmnode.cpp45-144
ScrollView 支持多种类型的交互式 UI 元素。
来源:src/viewer/scrollview.h285-305 src/viewer/scrollview.cpp514-747
来源:src/viewer/scrollview.h189-191 src/viewer/scrollview.cpp432-449
GRAPHICS_DISABLED 编译标志禁用所有可视化代码。来源:src/viewer/scrollview.h31-43 src/viewer/scrollview.cpp83-87
ScrollView 特别适用于可视化 UNICHARSET 的内容,UNICHARSET 在 Tesseract 中代表 Unicode 字符集。可视化工具可以显示字符属性,提供字符识别的可视化调试,并帮助分析特定脚本的问题。
有关字符集管理,请参阅字符集管理页面。
来源: src/ccutil/unicharset.cpp329-360 src/ccutil/unicharcompress.cpp204-240
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(d39177)