mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-06 16:10:42 +08:00
添加OCR代码
这是一个废弃代码
This commit is contained in:
19
others/C++/gcc_OCR/include/common.hpp
Normal file
19
others/C++/gcc_OCR/include/common.hpp
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef COMMON_HPP
|
||||
#define COMMON_HPP
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
|
||||
// 公共宏定义
|
||||
#define APP_NAME "OCR识别器"
|
||||
#define APP_VERSION "1.0.0"
|
||||
|
||||
// 公共类型定义
|
||||
using String = std::string;
|
||||
|
||||
// 错误处理宏
|
||||
#define THROW_EXCEPTION(msg) throw std::runtime_error(std::string(__FILE__) + ":" + std::to_string(__LINE__) + " " + msg)
|
||||
|
||||
#endif // COMMON_HPP
|
||||
40
others/C++/gcc_OCR/include/config.hpp
Normal file
40
others/C++/gcc_OCR/include/config.hpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#ifndef CONFIG_HPP
|
||||
#define CONFIG_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <map>
|
||||
|
||||
struct AppConfig {
|
||||
String language; // OCR识别语言
|
||||
String lastDir; // 最后打开的目录
|
||||
int windowWidth; // 窗口宽度
|
||||
int windowHeight; // 窗口高度
|
||||
};
|
||||
|
||||
class ConfigManager {
|
||||
public:
|
||||
ConfigManager();
|
||||
|
||||
// 加载配置
|
||||
bool loadConfig(const String& filePath = "config.ini");
|
||||
|
||||
// 保存配置
|
||||
bool saveConfig(const String& filePath = "config.ini");
|
||||
|
||||
// 获取配置
|
||||
AppConfig getConfig() const;
|
||||
|
||||
// 更新配置
|
||||
void updateConfig(const AppConfig& newConfig);
|
||||
|
||||
private:
|
||||
AppConfig config;
|
||||
|
||||
// 解析INI文件
|
||||
void parseIni(const String& content);
|
||||
|
||||
// 生成INI文件内容
|
||||
String generateIni() const;
|
||||
};
|
||||
|
||||
#endif // CONFIG_HPP
|
||||
28
others/C++/gcc_OCR/include/error_handler.hpp
Normal file
28
others/C++/gcc_OCR/include/error_handler.hpp
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef ERROR_HANDLER_HPP
|
||||
#define ERROR_HANDLER_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <stdexcept>
|
||||
|
||||
// 错误代码枚举
|
||||
enum class ErrorCode {
|
||||
FILE_IO_ERROR,
|
||||
OCR_INIT_ERROR,
|
||||
OCR_PROCESS_ERROR,
|
||||
GUI_ERROR,
|
||||
UNKNOWN_ERROR
|
||||
};
|
||||
|
||||
// 自定义异常类
|
||||
class OCRException : public std::runtime_error {
|
||||
public:
|
||||
ErrorCode code;
|
||||
|
||||
OCRException(ErrorCode ec, const String& msg)
|
||||
: std::runtime_error(msg), code(ec) {}
|
||||
};
|
||||
|
||||
// 错误处理函数
|
||||
void handleError(const std::exception& e);
|
||||
|
||||
#endif // ERROR_HANDLER_HPP
|
||||
16
others/C++/gcc_OCR/include/file_io.hpp
Normal file
16
others/C++/gcc_OCR/include/file_io.hpp
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef FILE_IO_HPP
|
||||
#define FILE_IO_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <vector>
|
||||
|
||||
// 保存文本到文件
|
||||
bool saveTextToFile(const String& filePath, const String& content);
|
||||
|
||||
// 从文件加载文本
|
||||
String loadTextFromFile(const String& filePath);
|
||||
|
||||
// 获取支持的图像格式列表
|
||||
std::vector<String> getSupportedImageFormats();
|
||||
|
||||
#endif // FILE_IO_HPP
|
||||
50
others/C++/gcc_OCR/include/gui_window.hpp
Normal file
50
others/C++/gcc_OCR/include/gui_window.hpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#ifndef GUI_WINDOW_HPP
|
||||
#define GUI_WINDOW_HPP
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl_Button.H>
|
||||
#include <FL/Fl_Text_Display.H>
|
||||
#include <FL/Fl_Text_Buffer.H>
|
||||
#include <FL/Fl_Choice.H>
|
||||
#include "../include/common.hpp"
|
||||
|
||||
class GUIWindow {
|
||||
public:
|
||||
GUIWindow(int width, int height, const char* title);
|
||||
~GUIWindow();
|
||||
|
||||
// 设置OCR结果文本
|
||||
void setOCRResult(const String& text);
|
||||
|
||||
// 按钮状态控制
|
||||
void disableButtons();
|
||||
void enableButtons();
|
||||
|
||||
// 获取当前语言设置
|
||||
String getLanguage() const;
|
||||
|
||||
private:
|
||||
Fl_Window* window;
|
||||
Fl_Text_Display* textDisplay;
|
||||
Fl_Text_Buffer* textBuffer;
|
||||
Fl_Button* openButton;
|
||||
Fl_Button* saveButton;
|
||||
Fl_Choice* languageChoice;
|
||||
|
||||
// 支持的语言列表
|
||||
static constexpr const char* LANGUAGES[3] = {"英文", "简体中文", "中英文混合"};
|
||||
static constexpr const char* LANGUAGE_CODES[3] = {"eng", "chi_sim", "eng+chi_sim"};
|
||||
|
||||
// 回调函数
|
||||
static void openCallback(Fl_Widget* w, void* data);
|
||||
static void saveCallback(Fl_Widget* w, void* data);
|
||||
|
||||
// 初始化UI
|
||||
void initUI();
|
||||
|
||||
// 异常处理辅助方法
|
||||
static void handleException(void* data);
|
||||
};
|
||||
|
||||
#endif // GUI_WINDOW_HPP
|
||||
31
others/C++/gcc_OCR/include/image_processor.hpp
Normal file
31
others/C++/gcc_OCR/include/image_processor.hpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef IMAGE_PROCESSOR_HPP
|
||||
#define IMAGE_PROCESSOR_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <leptonica/allheaders.h>
|
||||
|
||||
class ImageProcessor {
|
||||
public:
|
||||
// 从文件加载图像并进行预处理
|
||||
static Pix* loadAndPreprocess(const String& filePath);
|
||||
|
||||
// 图像预处理
|
||||
static Pix* preprocess(Pix* image);
|
||||
|
||||
// 转换为灰度图像
|
||||
static Pix* convertToGrayscale(Pix* image);
|
||||
|
||||
// 二值化处理
|
||||
static Pix* binarize(Pix* image);
|
||||
|
||||
// 调整对比度
|
||||
static Pix* adjustContrast(Pix* image, float factor);
|
||||
|
||||
// 调整亮度
|
||||
static Pix* adjustBrightness(Pix* image, int delta);
|
||||
|
||||
// 降噪处理
|
||||
static Pix* removeNoise(Pix* image);
|
||||
};
|
||||
|
||||
#endif // IMAGE_PROCESSOR_HPP
|
||||
30
others/C++/gcc_OCR/include/ocr_engine.hpp
Normal file
30
others/C++/gcc_OCR/include/ocr_engine.hpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#ifndef OCR_ENGINE_HPP
|
||||
#define OCR_ENGINE_HPP
|
||||
|
||||
#include <tesseract/baseapi.h>
|
||||
#include <leptonica/allheaders.h>
|
||||
#include "../include/common.hpp"
|
||||
|
||||
class OCREngine {
|
||||
public:
|
||||
OCREngine();
|
||||
~OCREngine();
|
||||
|
||||
// 设置识别语言
|
||||
bool setLanguage(const String& lang);
|
||||
|
||||
// 从图像文件识别文本
|
||||
String recognizeFromFile(const String& filePath);
|
||||
|
||||
// 从内存图像识别文本
|
||||
String recognizeFromImage(Pix* image);
|
||||
|
||||
private:
|
||||
tesseract::TessBaseAPI* api;
|
||||
String currentLanguage;
|
||||
|
||||
// 初始化Tesseract
|
||||
void initTesseract();
|
||||
};
|
||||
|
||||
#endif // OCR_ENGINE_HPP
|
||||
27
others/C++/gcc_OCR/include/result_display.hpp
Normal file
27
others/C++/gcc_OCR/include/result_display.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef RESULT_DISPLAY_HPP
|
||||
#define RESULT_DISPLAY_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <vector>
|
||||
|
||||
class ResultDisplay {
|
||||
public:
|
||||
// 格式化OCR结果
|
||||
static String formatResult(const String& rawText);
|
||||
|
||||
// 校正常见OCR错误
|
||||
static String correctCommonErrors(const String& text);
|
||||
|
||||
// 分割段落
|
||||
static std::vector<String> splitParagraphs(const String& text);
|
||||
|
||||
// 高亮低置信度区域
|
||||
static String highlightLowConfidence(const String& text, const std::vector<float>& confidences);
|
||||
|
||||
// 导出为不同格式
|
||||
static bool exportAsText(const String& filePath, const String& content);
|
||||
static bool exportAsHtml(const String& filePath, const String& content);
|
||||
static bool exportAsPdf(const String& filePath, const String& content);
|
||||
};
|
||||
|
||||
#endif // RESULT_DISPLAY_HPP
|
||||
20
others/C++/gcc_OCR/include/utils.hpp
Normal file
20
others/C++/gcc_OCR/include/utils.hpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef UTILS_HPP
|
||||
#define UTILS_HPP
|
||||
|
||||
#include "../include/common.hpp"
|
||||
#include <vector>
|
||||
|
||||
// 字符串工具
|
||||
String trim(const String& str);
|
||||
std::vector<String> split(const String& str, char delimiter);
|
||||
String join(const std::vector<String>& strings, const String& delimiter);
|
||||
|
||||
// 图像工具
|
||||
bool isImageFile(const String& filePath);
|
||||
String getFileExtension(const String& filePath);
|
||||
|
||||
// 系统工具
|
||||
String getCurrentDateTime();
|
||||
String getHomeDirectory();
|
||||
|
||||
#endif // UTILS_HPP
|
||||
Reference in New Issue
Block a user