기술나눔

어려움 없이 이미지 및 텍스트 인식을 시작하세요 ~ 간단한 ocr 및 플라잉 펄프를 기반으로 pdf를 txt로 변환

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

여기에 이미지 설명을 삽입하세요.

머리말

이 PDF는 시각적 인식에 대한 기본 지식이 전혀 없는 순수 Windows 초보 사용자에게 적합합니다. 사장님 좀 우회해주세요~~
알아채다:
본 프로젝트의 PDF OCR은 표, 도면 텍스트, 워터마크 등과 같은 간섭에 대한 처리를 수행하지 않습니다. 따라서 이 기능을 사용하는 PDF에는 이러한 간섭 항목이 최대한 포함되지 않아 영향을 미치지 않기를 바랍니다. 번역 효과.

프로세스

1. 환경 구축

Conda를 사용하여 가상 Python 환경 만들기

conda crate -n pp python==3.11

2. 설치 패키지

패들과 paddleocr 설치
GPU 버전

pip install paddlepaddle-gpu paddleocr

CPU 버전

pip 설치 paddlepaddle paddleocr

PDF를 그림 도구로

https://github.com/oschwartz10612/poppler-windows/releases

pip 설치 pdf2image

3. 특정 코드

pdfs 폴더에 여러 개의 pdf 파일이 있고 각 pdf 파일을 해당 txt 파일로 변환해야 한다고 가정합니다.다음 코드를 사용할 수 있습니다


from pdf2image import convert_from_path
import cv2
import numpy as np
from PIL import Image
import os
# 将 PDF 文件转换为图片列表
files = os.listdir('pdf')

for file in files:
    if not file.endswith('.pdf'):
        print(file)
        continue
    txt = file.replace('.pdf', '.txt')
    if os.path.exists('txt/' txt):
        continue
    txt_writer = open('txt/' txt, 'w',encoding='utf-8')
    images = convert_from_path('pdf/' file)
    # print(type(images))
    # print(images[0])
    # image = cv2.cvtColor(np.array(images[0]), cv2.COLOR_RGB2BGR)


    from paddleocr import PaddleOCR, draw_ocr

    # 创建 PaddleOCR 实例
    ocr = PaddleOCR(use_angle_cls=True, lang='ch',use_gpu=True)  # 默认使用英文模型,可以通过 lang 参数切换到中文模型

    # 遍历每一张图片并识别文字
    for i, image in enumerate(images):
        print('第{}张图片'.format(i 1))
        # 转换图片为可用于识别的格式
        # source = image.convert('RGB')
        image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)        # image.save(f'page_{i}.jpg')

        # 识别图片中的文字
        result = ocr.ocr(image, cls=True)

        # 打印识别结果
        try:
            for lines in result:
                for line in lines:
                    # print(line[1][0])
                    txt_writer.write(line[1][0] 'n')
        except:
            print(file '识别失败')
    txt_writer.close()


4.주의

이 코드는 단순히 PDF의 텍스트만 추출할 수 있기 때문에 일단 그림이나 표가 생성되면 페이지 인식 효과가 저하됩니다~