上一篇
按键读取剪切板文字识别
- 行业动态
- 2025-05-15
- 1
监听快捷键触发,读取剪切板内容,调用OCR识别文字
核心技术点
剪切板监听
- 实时监控剪切板内容变化,或通过快捷键主动读取当前剪切板数据。
- 支持多种数据类型(纯文本、图片、HTML等),需根据类型选择处理逻辑。
文字识别(OCR)
- 若剪切板内容为图片(如截图),需使用光学字符识别(OCR)技术提取文字。
- 常用工具:Tesseract、PaddleOCR、Google Vision API等。
快捷键触发
- 定义全局热键(如
Ctrl+Alt+O
),用户按下后自动执行读取和识别操作。 - 依赖键盘事件监听库(如
keyboard
、pynput
)。
- 定义全局热键(如
实现步骤
安装依赖库
pip install pyperclip keyboard pillow pytesseract
pyperclip
:跨平台操作剪切板。keyboard
:监听或发送按键事件。pillow
:处理图片数据。pytesseract
:调用 Tesseract OCR 引擎。
代码示例(Python)
import pyperclip import keyboard from PIL import Image import pytesseract # 设置 Tesseract 路径(Windows 需手动指定) pytesseract.pytesseract.tesseract_cmd = r'C:Program FilesTesseract-OCRtesseract.exe' def handle_clipboard(): # 获取剪切板内容 content = pyperclip.paste() # 判断内容类型 if isinstance(content, str): print("纯文本内容:", content) elif isinstance(content, bytes): # 尝试解析为图片 try: image = Image.open(io.BytesIO(content)) text = pytesseract.image_to_string(image) print("图片文字识别结果:", text) except Exception as e: print("非图片内容或识别失败:", e) else: print("不支持的剪切板内容类型") # 绑定快捷键(Ctrl+Alt+O) keyboard.add_hotkey('ctrl+alt+o', handle_clipboard) # 保持程序运行 keyboard.wait()
技术对比表
功能模块 | 工具/库 | 适用场景 | 优点 | 缺点 |
---|---|---|---|---|
剪切板操作 | pyperclip | 跨平台文本复制粘贴 | 轻量、简单 | 仅支持纯文本 |
键盘监听 | keyboard | 全局快捷键触发 | 支持组合键 | 需管理员权限(Windows) |
图片处理 | pillow | 解析剪切板图片数据 | 兼容多种格式 | 依赖图片质量 |
文字识别(OCR) | pytesseract | 英文/中文文字识别 | 免费、开源 | 对复杂排版识别率低 |
常见问题与优化
为富文本或文件
- 需额外解析数据格式(如 HTML 或 RTF),提取纯文本或图片。
- 优化:增加格式判断逻辑,仅处理支持的类型。
OCR 识别准确率低
- 原因:图片模糊、文字倾斜、背景复杂。
- 优化:预处理图片(灰度化、二值化)、使用高精度模型(如 PaddleOCR)。
快捷键冲突
解决方案:允许用户自定义快捷键,或检查系统已占用的组合键。
相关问题与解答
问题1:如何区分剪切板内容是纯文本还是图片?
- 解答:
- 纯文本:
pyperclip.paste()
返回字符串类型(str
)。 - 图片:部分系统(如 Windows)复制图片时,剪切板内容为二进制数据(
bytes
),可通过isinstance(content, bytes)
判断,并尝试用PIL.Image
解析。
- 纯文本:
问题2:如何提高 OCR 对中文手写体的识别率?
- 解答:
- 使用专为中文优化的 OCR 引擎(如 PaddleOCR)。
- 对图片进行预处理(如降噪、增强对比度)。
- 训练自定义模型:收集手写体样本,微调现有 OCR