# 桌面透明文字电子书阅读器qiweb **Repository Path**: qiweb/qiweb_transparent_text_reader_pro ## Basic Information - **Project Name**: 桌面透明文字电子书阅读器qiweb - **Description**: 创建文本控件(背景先用颜色键,真正透明)颜色键(chroma):任何与此颜色完全相同的像素都会变透明。 # 选一个正常文本/背景不会用到的洋红色,避免误透明。"飞龙 纯文本阅读器(优化版)\n" "基于 Python Tkinter + pywin32\n" "默认背景透明、只显示文字;右键可调背景透明度与字体。" - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 屏幕照片还原 Python 源码工具集 把**手机拍的屏幕照片**(代码截图)识别、切片、人工核对,最终**还原成完整可运行的 Python 脚本**的一整套工具。 本项目源于一个实际场景:手头只有 6 张从斜上方拍的代码屏幕照片,需要把它们还原成完整 `.py` 文件。流程分为「图片预处理/OCR」和「还原出的目标程序」两部分。 --- ## 目录结构 ``` . ├── preprocess_and_ocr.py # 图像预处理 + Tesseract OCR(自动识别代码文字) ├── make_tiles.py # 把屏幕区域切片放大,便于肉眼逐段核对 ├── reconstructed_transparent_text_reader.py # 【还原成果1】原版:半透明文本阅读器 ├── transparent_text_reader_pro.py # 【还原成果2】优化版:只显示文字 + 字体选择 + 背景透明度可调 ├── ocr_output/ # OCR 输出(识别文本 + 预处理图,已 gitignore) ├── tiles/ # 切片图(人工核对用,已 gitignore) ├── tesseract_extracted/ # Tesseract 二进制(已 gitignore,不入库) ├── tesseract_download/ # Tesseract 安装包(已 gitignore) └── __pycache__/ # Python 缓存(已 gitignore) ``` --- ## 一、识别还原流程(图片 → 文本) ### 1. `preprocess_and_ocr.py` 对每张照片做:**检测屏幕区域 → 裁剪 → 放大 → 增强对比/锐化 → 二值化 → OCR**。 - 依赖:`opencv-python`、`Pillow`、`numpy`、`pytesseract`,以及本机 Tesseract 引擎。 - 关键路径(需按本机修改): - `TESSERACT_CMD`:Tesseract 可执行文件路径 - `TESSDATA_PREFIX`:语言包目录 - `INPUT_DIR`:照片目录(本项目为 `C:\Users\hw\Desktop\ximalaya\pic`) - `OUTPUT_DIR`:输出目录 - 输出:每张图一份 `_ocr.txt` 和 `_preprocessed.jpg`,以及汇总 `combined_ocr.txt`。 - 识别语言:`chi_sim+eng`(中文简体 + 英文),`--psm 6` 假设为统一文本块。 > 说明:照片是从斜上方拍的,文字小且带透视,纯 OCR 准确率有限,本脚本的产物主要作为参考,最终以人工核对切片为准。 ### 2. `make_tiles.py` 把检测到的屏幕区域**旋转 90° 摆正 → 放大到宽 1800px → 切成高 800px 的小图**(`_tileNN.jpg`)。 - 用途:把一整屏代码拆成清晰的小图,方便逐个窗口/逐段肉眼识别字符,避免直接 OCR 的错漏。 - 依赖:`opencv-python`、`Pillow`、`numpy`。 - 关键路径:`INPUT_DIR`、`OUTPUT_DIR`(同上为照片目录与 `tiles/`)。 ### 运行顺序 ```bash python preprocess_and_ocr.py # 先看 OCR 大致内容 python make_tiles.py # 再生成切片,人工逐张核对 ``` 人工核对 `tiles/` 下的切片,对照 `ocr_output/combined_ocr.txt`,即可把代码拼回完整 `.py`。 --- ## 二、还原出的目标程序(文本阅读器) 照片里原本的程序是一个 **tkinter + pywin32 的半透明纯文本阅读器**,按"每屏字符数"自动分页、定时翻页,常用于边做别的事边浮窗看小说/文档。 ### `reconstructed_transparent_text_reader.py`(原版) - 无边框、可拖拽、右下角可缩放的半透明窗口。 - 右键菜单:加载 txt、设置、暂停/继续、置顶、关于、退出。 - 按字符数分页,定时自动翻页(上下方向键手动翻页)。 - 设置面板可调:字体名(手动输入)、字号、字体颜色、切换速度、每屏字符数。 - 透明度用整窗 `LWA_ALPHA`(约 86% 不透明),背景是个半透明白框。 ### `transparent_text_reader_pro.py`(优化版,推荐) 在原版基础上做了三处优化: 1. **只显示文字**:默认用颜色键透明 `LWA_COLORKEY`(键色 `#FF00FF`),背景完全透明,**只显示文字**,桌面直接透出来(解决原版"半透明白框"问题)。 2. **字体可选系统字体**:设置面板里字体改为下拉框,列出 `tkinter.font.families()` 的本机所有字体。 3. **背景透明度可调**:右键菜单新增「背景透明度 + / -」。 - `0` 档 = 纯透明只显示文字; - `>0` 档 = 带半透明背板(整体 `LWA_ALPHA`,alpha 150~255),适合桌面太花时垫一层底色。 - 菜单底部状态栏实时显示当前档位。 - 新增「背板颜色」设置项。 4. 禁止把文字/背板颜色设为透明键色(否则该色像素会消失)。 运行依赖(两个版本都需要): ```bash pip install pywin32 # tkinter 在标准 Python 发行版中自带,无需额外安装 python transparent_text_reader_pro.py ``` --- ## 三、环境准备 ### Python 依赖 ```bash pip install opencv-python Pillow numpy pytesseract pywin32 ``` ### Tesseract OCR 引擎(仅 `preprocess_and_ocr.py` 需要) - 下载 Windows 版 Tesseract 并解压,记下 `tesseract.exe` 与 `tessdata` 路径。 - 语言包:需要 `chi_sim.traineddata` 与 `eng.traineddata`,放入 `tessdata/`。 - 在 `preprocess_and_ocr.py` 顶部把 `TESSERACT_CMD` / `TESSDATA_PREFIX` 指向你的路径。 > 本项目工作区里已附带一份解压好的 Tesseract(`tesseract_extracted/`),但该目录体积大,**不纳入版本库**(见 `.gitignore`)。克隆仓库后请自行安装 Tesseract 并修改脚本路径。 --- ## 四、注意事项 - 脚本中的路径(`INPUT_DIR`、`OUTPUT_DIR`、`TESSERACT_CMD` 等)均为本机绝对路径,**迁移到其他机器需手动修改**。 - OCR 仅作辅助,最终还原质量依赖人工核对切片(`tiles/`)。 - 透明阅读器仅支持 Windows(依赖 `win32gui` / `win32con`)。 - `tesseract_*` 目录与 `ocr_output/`、`tiles/`、`__pycache__/` 均已加入 `.gitignore`,不会随仓库提交。