在Python中,从图像中提取文本的功能通常依赖于光学字符识别(OCR)技术。OCR可以通过多种库实现,每种库都有其独特的优势和使用场景。以下是8个常用的OCR库及其简要说明与代码示例。

1. Tesseract

Tesseract 是一个流行的开源OCR引擎,原由HP开发,现在由Google维护。它支持多种语言,并且效果非常好。

import pytesseract
from PIL import Image

# 读取图片
img = Image.open('example.png')
# 使用Tesseract提取文本
text = pytesseract.image_to_string(img, lang='chi_sim')
print(text)

2. EasyOCR

EasyOCR是一个非常简单易用的OCR库,支持多种语言,尤其对于中文的识别能力较强。

import easyocr

reader = easyocr.Reader(['ch_sim', 'en'])  # 指定中文和英文语言
result = reader.readtext('example.png')

for (bbox, text, prob) in result:
    print(f"识别文本: {text}, 概率: {prob:.2f}")

3. OCR.space

OCR.space 提供了一个在线OCR服务,可以通过调用API来完成OCR任务。需要注册获取API密钥。

import requests

API_KEY = 'your_api_key'  # 替换为你的API密钥
url = 'https://api.ocr.space/parse/image'

with open('example.png', 'rb') as f:
    r = requests.post(url,
                      files={ 'filename': f },
                      data={ 'apikey': API_KEY })

result = r.json()
print(result['ParsedResults'][0]['ParsedText'])

4. Keras-OCR

Keras-OCR是一个基于Keras的OCR工具,使用深度学习技术进行字符检测与识别,适合需要更加准确结果的场景。

import keras_ocr

# 创建一个识别器
pipeline = keras_ocr.pipeline.Pipeline()
# 读取图片
images = [keras_ocr.tools.read('example.png')]
# 提取文本
prediction_groups = pipeline.recognize(images)

for predictions in prediction_groups:
    for text, box in predictions:
        print(f"识别文本: {text}")

5. PaddleOCR

PaddleOCR是百度的一个OCR工具,支持多种语言和场景,性能优秀。

from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang='ch')  # need to run the following command to install PaddleOCR
# 提取文本
result = ocr.ocr('example.png')

for line in result[0]:
    print(f"识别文本: {line[1][0]}")

6. PyOCR

PyOCR是一个在Python中使用Tesseract的封装库,支持Tesseract和Cuneiform引擎。

import sys
from PIL import Image
import pyocr
import pyocr.builders

tool = pyocr.get_available_tools()[0]
img = Image.open('example.png')

text = tool.image_to_string(
    img,
    lang='chi_sim',
    builder=pyocr.builders.TextBuilder()
)

print(text)

7. OCRmyPDF

OCRmyPDF是一个将OCR功能添加到PDF文件中的工具,利用Tesseract实现。

ocrmypdf --rotate-pages -l chi_sim input.pdf output.pdf

8. Textract

Textract可以从多种文档类型中提取文本,包括PDF和DOCX等。

import textract

text = textract.process('example.pdf', encoding='utf-8')
print(text.decode('utf-8'))

总结

以上8个OCR库各有优势,用户可根据具体需求选择合适的工具。如果是处理简单的图像文本提取,可以选择Tesseract或EasyOCR;如果需要处理复杂文档或多语言,PaddleOCR和TensorFlow OCR可能更合适。希望这些示例能帮助您了解如何在Python中实现OCR。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部