news 2026/5/12 8:05:19

识别手写笔记照片转为电子文字,同时按段落拆分,支持一键导入办公文档。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
识别手写笔记照片转为电子文字,同时按段落拆分,支持一键导入办公文档。

1. 实际应用场景与痛点

场景

- 学生上课记手写笔记,课后想转成电子稿复习

- 会议记录用手写白板拍照,需快速整理成 Word/PPT

- 研究人员访谈记录手写,需数字化归档

- 教师批改作业后,将手写评语转成电子文本

痛点

- 手动录入费时费力

- 普通 OCR 对潦草字迹识别率低

- 识别结果没有段落结构,难以直接使用

- 不同设备拍摄角度、光线影响识别效果

- 缺乏一键导出到办公文档的功能

2. 核心逻辑讲解

1. 图像预处理

- 灰度化、二值化、去噪、倾斜校正(OpenCV)

2. 手写 OCR

- 使用 PaddleOCR(对中文手写效果好)或 EasyOCR

3. 文本后处理

- 正则清洗、合并断行

- 基于规则/NLP 模型进行段落拆分(如空行、缩进、标点)

4. 导出办公文档

- 使用

"python-docx" 生成 Word

- 或使用

"python-pptx" 生成 PPT

5. 批量处理

- 支持单张或整个文件夹批量识别

3. 项目结构

handwriting_ocr/

├── ocr_processor.py # OCR 识别与段落拆分

├── preprocess.py # 图像预处理

├── doc_exporter.py # 导出 Word/PPT

├── config.py # 配置参数

├── requirements.txt # 依赖

├── README.md # 使用说明

└── sample_notes/ # 示例手写照片

4. 代码实现

"config.py"

# OCR 配置

OCR_LANG = 'ch' # PaddleOCR 语言

USE_GPU = False # 是否使用 GPU

# 导出配置

EXPORT_FORMAT = 'docx' # 'docx' 或 'pptx'

"preprocess.py"

import cv2

import numpy as np

def preprocess_image(image_path):

img = cv2.imread(image_path)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化

_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

# 去噪

denoised = cv2.medianBlur(binary, 3)

# 倾斜校正(简单版)

coords = np.column_stack(np.where(denoised > 0))

angle = cv2.minAreaRect(coords)[-1]

if angle < -45:

angle = -(90 + angle)

else:

angle = -angle

(h, w) = img.shape[:2]

center = (w // 2, h // 2)

M = cv2.getRotationMatrix2D(center, angle, 1.0)

rotated = cv2.warpAffine(img, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)

return rotated

"ocr_processor.py"

from paddleocr import PaddleOCR

import re

from config import OCR_LANG, USE_GPU

ocr = PaddleOCR(use_angle_cls=True, lang=OCR_LANG, use_gpu=USE_GPU)

def recognize_text(image_path):

processed_img = preprocess_image(image_path)

result = ocr.ocr(processed_img, cls=True)

texts = []

for line in result:

for word_info in line:

texts.append(word_info[1][0])

full_text = ' '.join(texts)

# 简单段落拆分:按连续换行或长停顿

paragraphs = re.split(r'\n\s*\n', full_text)

paragraphs = [p.strip() for p in paragraphs if p.strip()]

return paragraphs

"doc_exporter.py"

from docx import Document

from pptx import Presentation

from config import EXPORT_FORMAT

def export_to_docx(paragraphs, output_path):

doc = Document()

for p in paragraphs:

doc.add_paragraph(p)

doc.save(output_path)

def export_to_ppt(paragraphs, output_path):

prs = Presentation()

blank_slide_layout = prs.slide_layouts[1]

for p in paragraphs:

slide = prs.slides.add_slide(blank_slide_layout)

title = slide.shapes.title

title.text = "笔记段落"

content = slide.placeholders[1]

content.text = p

prs.save(output_path)

def export_document(paragraphs, output_path):

if EXPORT_FORMAT == 'docx':

export_to_docx(paragraphs, output_path)

elif EXPORT_FORMAT == 'pptx':

export_to_ppt(paragraphs, output_path)

主程序

"main.py"

import os

from ocr_processor import recognize_text

from doc_exporter import export_document

def process_folder(input_folder, output_file):

all_paragraphs = []

for fname in os.listdir(input_folder):

if fname.lower().endswith(('.png', '.jpg', '.jpeg')):

path = os.path.join(input_folder, fname)

paras = recognize_text(path)

all_paragraphs.extend(paras)

export_document(all_paragraphs, output_file)

print(f"已导出到 {output_file}")

if __name__ == "__main__":

process_folder("sample_notes", "output.docx")

5.

"requirements.txt"

paddleocr>=2.6.0

opencv-python

python-docx

python-pptx

numpy

6. README.md

# 手写笔记 OCR 转电子文档工具

支持拍照识别手写笔记,自动分段,并导出 Word/PPT。

## 功能

- 图像预处理(去噪、二值化、倾斜校正)

- 手写 OCR(PaddleOCR)

- 段落自动拆分

- 一键导出 .docx 或 .pptx

## 安装

bash

pip install -r requirements.txt

## 使用

1. 将手写照片放入 `sample_notes/` 文件夹

2. 运行:

bash

python main.py

3. 在 `output.docx` 查看结果

## 配置

修改 `config.py` 选择导出格式、语言等。

7. 核心知识点卡片

知识点 说明

PaddleOCR 开源 OCR 引擎,支持中英文及手写

OpenCV 图像预处理,提高 OCR 准确率

段落拆分 基于空行、标点等规则或 NLP 模型

python-docx 生成 Word 文档

python-pptx 生成 PPT 演示文稿

批量处理 遍历文件夹自动化处理

8. 总结

本工具通过 AI OCR + 文本后处理 + 办公文档导出 实现了手写笔记的数字化全流程,解决了手动录入和格式混乱的痛点。

未来可扩展:

- 接入更强大的 NLP 模型进行语义分段

- 增加 PDF 导出

- 开发 Web/GUI 界面方便非技术用户

- 加入手写风格美化(如 LaTeX 公式识别)

如果你需要,还可以集成一个轻量级的 Web 界面(Flask),让用户直接上传照片并下载 Word 文件,这样会更贴近实际办公场景。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 17:48:35

HGDB copy命令关于字符集出错总结及其解决方案

文章目录 环境症状问题原因解决方案 环境 系统平台&#xff1a; 版本&#xff1a;4.3.2 症状 命令描述&#xff1a;COPY 在表和文件之间拷贝数据。COPYTO 把一个表的所有内容都拷贝到一个文件&#xff0c;而 COPY FROM 从一个文件里拷贝数据到一个表里(把数据附加到表中原数…

作者头像 李华
网站建设 2026/5/10 6:16:15

《VirtualLab Fusion物理光学实验教程》好书分享

目录第一章 物理光学概念介绍 61.1 几何光学和光线追迹 61.2 物理光学和光场追迹 61.3 电场、磁场以及坡印廷矢量 81.4 振幅、相位及实部和虚部 91.5 振幅、相位与偏振 101.6菲涅尔公式 111.7 全反射 131.8倏逝波 13第二章 光的干涉及干涉系统建模仿真 152.1 牛顿环模拟仿真 1…

作者头像 李华
网站建设 2026/5/10 2:58:17

【收藏】从零转行大模型领域!一份写给程序员小白的超全转型攻略

在AI大模型技术席卷各行各业的当下&#xff0c;不少编程小白和传统程序员都想切入这个赛道&#xff0c;但往往会陷入“不知道从哪学、学了怎么用”的迷茫。这份超详细的转型攻略&#xff0c;就带你从0到1打通大模型领域的学习路径&#xff0c;帮你少走弯路&#xff0c;快速入门…

作者头像 李华
网站建设 2026/5/10 7:12:31

【2026年】网络安全入门教程(非常详细)从零基础入门到精通

网络安全是一个庞大而不断发展的领域&#xff0c;它包含多个专业领域&#xff0c;如网络防御、网络攻击、数据加密等。介绍网络安全的基本概念、技术和工具&#xff0c;逐步深入&#xff0c;帮助您成为一名合格的网络安全从业人员。 一、网络安全概念与重要性 理解网络安全的定…

作者头像 李华