图书馆档案培训:Python批量OCR识别实操

一、环境搭建:安装Tesseract OCR引擎

在进行图书馆档案数字化培训时,首要任务是搭建OCR(光学字符识别)环境。Tesseract是目前公认最优秀的开源OCR引擎,支持中文识别。以下是不同操作系统的具体安装步骤,请严格按照顺序执行,否则后续代码调用会报错。

1. Windows系统安装步骤

Windows用户需要下载安装包。不要去官网找源码编译,直接下载Windows安装包。

下载地址: https://github.com/UB-Mannheim/tesseract/wiki

进入页面后,找到 tesseract-ocr-w64-setup-5.x.x.exe(5.x.x代表版本号,选最新的)进行下载。

安装过程中,务必勾选 "Additional language data(download)",并在列表中找到 Chi_Simplified (simplified Chinese) 勾选上。这一步如果不做,后续无法识别中文。安装路径建议默认为 C:\Program Files\Tesseract-OCR,如果修改了,请务必记住路径,后续代码需要配置。

2. Linux系统安装步骤

如果是基于Ubuntu的服务器或开发机,直接执行以下命令即可完成引擎和中文语言包的安装:

```bash sudo apt update sudo apt install tesseract-ocr sudo apt install tesseract-ocr-chi-sim ```

3. macOS系统安装步骤

macOS用户使用Homebrew进行安装最为便捷:

```bash brew install tesseract brew install tesseract-lang ```

二、Python依赖库安装

环境准备好后,我们需要安装Python的胶水库来调用Tesseract。打开终端或命令行窗口,执行以下命令:

```bash pip install pytesseract pillow opencv-python ```

依赖说明:

  • pytesseract: Python的Tesseract封装包,用于调用引擎。
  • pillow: 图像处理库,用于读取图片文件。
  • opencv-python: 用于高级图像预处理(如灰度化、二值化),提高老旧档案的识别率。

三、项目目录结构规划

为了方便培训实操,请在本地建立一个工作目录,结构如下。请严格按照此结构创建文件夹和文件,否则代码运行会找不到路径。

```text library_archive_ocr/ ├── input/ 存放待识别的档案图片(支持jpg, png) ├── output/ 存放识别后的txt文本结果 └── ocr_tool.py 核心代码文件 ```

四、核心代码编写:图像预处理与识别

图书馆档案培训:Python批量OCR识别实操

创建 ocr_tool.py 文件,复制以下完整代码。这段代码包含了自动遍历文件夹、图像降噪预处理(这对老旧档案至关重要)、OCR识别及结果保存功能。

1. 导入模块与路径配置

```python import os import cv2 import pytesseract from PIL import Image 如果是Windows系统,必须手动指定tesseract.exe的路径 如果是Linux/Mac且配置了环境变量,可以注释掉这一行 请将下面的路径替换为你实际安装的路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' 定义文件夹路径 INPUT_DIR = 'input' OUTPUT_DIR = 'output' 确保输出文件夹存在 if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) ```

2. 图像预处理函数

图书馆档案通常年代久远,纸质发黄或有噪点。直接识别准确率很低,必须进行灰度化和二值化处理。

```python def preprocess_image(image_path): """ 对图像进行预处理:灰度化 -> 去噪 -> 二值化 """ 读取图像 img = cv2.imread(image_path) 转换为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 二值化处理 这里的阈值150可以根据实际图片清晰度调整,范围0-255 THRESH_BINARY_INV 表示反色处理,如果是白底黑字,用THRESH_BINARY即可 档案通常是白底黑字,使用 cv2.THRESH_BINARY _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) return thresh ```

3. 批量处理逻辑

这是主执行逻辑,它会自动扫描input文件夹下的所有图片,处理后保存到output文件夹。

```python def process_files(): 支持的图片格式 valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.tiff') 获取input目录下所有文件 files = os.listdir(INPUT_DIR) if not files: print(f"错误:{INPUT_DIR} 文件夹为空,请放入待识别的图片。") return print(f"开始处理,共发现 {len(files)} 个文件...") for filename in files: if filename.lower().endswith(valid_extensions): file_path = os.path.join(INPUT_DIR, filename) print(f"正在识别: {filename} ...") try: 1. 图像预处理 processed_img = preprocess_image(file_path) 将OpenCV图像格式转换为PIL格式,因为pytesseract需要PIL对象 pil_img = Image.fromarray(processed_img) 2. 执行OCR识别 lang='chi_sim+eng' 表示同时识别简体中文和英文 text = pytesseract.image_to_string(pil_img, lang='chi_sim+eng') 3. 保存结果 output_filename = os.path.splitext(filename)[0] + '.txt' output_path = os.path.join(OUTPUT_DIR, output_filename) with open(output_path, 'w', encoding='utf-8') as f: f.write(text) print(f"完成: {filename} -> {output_filename}") except Exception as e: print(f"处理文件 {filename} 时出错: {e}") else: print(f"跳过非图片文件: {filename}") print("所有任务处理完毕,结果已保存在 output 文件夹。") if __name__ == '__main__': process_files() ```

五、中文识别能力扩展

在上述代码中,我们使用了 lang='chi_sim+eng' 参数。这要求Tesseract的数据文件夹中必须包含 chi_sim.traineddata 文件。

如果你在Windows安装时漏选了语言包,或者Linux安装报错,请手动下载该文件:

下载地址: https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata

放置位置:

  • Windows: 放置在 C:\Program Files\Tesseract-OCR\tessdata 目录下。
  • Linux: 放置在 /usr/share/tesseract-ocr/4.00/tessdata//usr/local/share/tessdata/

六、运行测试与结果验证

1. 找几张图书馆的借阅单、档案封面图片,重命名为简单的英文或数字(如 test1.jpg),放入 input 文件夹。

2. 在终端中进入项目目录,运行脚本:

```bash python ocr_tool.py ```

3. 观察终端输出,确认没有报错。如果提示 "tesseract is not installed or isn't in your PATH",请回头检查代码中的 pytesseract.pytesseract.tesseract_cmd 路径是否填写正确。

4. 打开 output 文件夹,查看生成的txt文件。对于打印体清晰的档案,识别率通常在95%以上;如果是手写体,Tesseract效果不佳,建议考虑接入云端API,但这已超出本纯本地化实操的范畴。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统