> 백엔드 개발 > 파이썬 튜토리얼 > Python은 PD 텍스트 인식, 추출 및 CSV 파일 스크립트 공유로 쓰기를 실현합니다.

Python은 PD 텍스트 인식, 추출 및 CSV 파일 스크립트 공유로 쓰기를 실현합니다.

PHPz
풀어 주다: 2023-05-17 19:40:04
앞으로
1950명이 탐색했습니다.

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

1. 서문

2. 요구 사항 설명

3. 두뇌 사용 시작

3.1 관련 타사 패키지 설치

3.2 필요한 타사 라이브러리 가져오기

3.3 PDF 파일 읽기 및 식별 content

3.4 식별된 데이터를 처리하여 csv 파일에 기록합니다.

요약

1. 서문

스캔된 문서는 항상 대중에게 인기가 있었습니다. 모든 종이 데이터는 스캔 후 보관됩니다. 당신이 그것을 사용하고 싶을 때, 노력과 노력을 절약하십시오. 그러나 스캔한 문서의 장점은 전자장치를 통해 스캔되기 때문에 파일에 있는 내용을 처리하려고 하면 직접 작업이 불가능하다는 단점도 있습니다.

내용을 인용하고 싶다면? 걱정하지 마십시오. Python이 문제 해결을 도와줄 것입니다.

2. 요구사항 설명

텍스트를 추출하여 csv 문서에 3열로 작성하려고 합니다.

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

pdfexample

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

csvexample

3. 손과 두뇌를 사용하세요

PDF 스캔은 문서를 컴퓨터 이미지 형식으로 스캔하여 변환하는 것입니다. 따라서 우리의 임무는 PDF를 그림으로 변환한 다음 OCR 도구를 사용하여 그림의 텍스트를 추출하는 것입니다.

3.1 관련 타사 패키지 설치

pip3 install pdf2image pytesseract
로그인 후 복사

3.2 필수 타사 라이브러리 가져오기

import os #处理文件
from pdf2image import convert_from_path# pdf转图片
import pytesseract# 识别图片文字
import csv# 处理csv文件
로그인 후 복사

3.3 pdf 파일을 읽고 내용을 식별하세요

tess_ocr(pdf_path, lang, first_page, last_page)

pdf 파일 분할 사진으로 나누고 텍스트를 추출하여 텍스트 파일로 작성합니다

  • pdf_path: PDF 파일의 저장 경로
  • image: PDF 문서의 각 페이지를 나타내는 PIL 이미지 목록
  • first_page: 첫 번째 설정 허용 pdftoppm으로 처리되는 페이지;
  • last_page: pdftoppm으로 처리할 마지막 페이지를 설정할 수 있습니다.
  • fmt: 출력 형식을 지정할 수 있습니다. 현재 지원되는 형식은 jpg, png, pm입니다.
  • 출력_폴더: 이미지 저장 경로
def tess_ocr(pdf_path, lang,first_page,last_page):
# 创建一个和pdf同名的文件夹
 images = convert_from_path(pdf_path, fmt='png',first_page=first_page,last_page=last_page,output_folder=imagefolder,userpw='site')# 转成图片
text = ''
for img in images:
 text += pytesseract.image_to_string(img, lang=lang) # 识别图片文字
 with open(r'exampledata.txt' 'a', encoding='utf-8') as f: #写入txt文件
 f.write(text)
로그인 후 복사

실행 결과

분할된 이미지를 저장할 동일한 이름의 폴더를 생성한 후 이미지 텍스트를 추출하여 데이터에 씁니다. .txt

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

image-20211215212147760

작업 문제

" " 문제 발생 1:

pdf2image.Exceptions.PDFInfoNotInstalledError: 포플러가 설치되어 있고 PATH에 있습니다. "

해결 방법 : pler 다운로드 .

>1 방법 1: 환경 변수 poppler/bin을 설정합니다.

>2 방법 2:

매개변수는 절대 경로를 지정합니다.

images = Convert_from_path(pdf_path=pdf_file_path, poppler_path=r'bin의 주소)

" " 문제 발생 2:

pytesseract.pytesseract.TesseractNotFoundError: tesseract가 설치되지 않았거나 PATH에 없습니다. 자세한 내용은 README 파일을 참조하세요. " "

해결 방법: tesseract를 추가로 다운로드하여 설치하세요. -ocr 및 환경 변수 구성.

3.4 식별된 데이터를 처리하여 csv 파일에 작성

수정(infile, outfile)

생성된 텍스트 문서 정리

  • infile: 처리해야 할 파일 주소
  • outfile: 이후 생성 처리 새 파일의 주소
def modification(infile, outfile):
infp = open(infile, "r",encoding='utf-8')
outfp = open(outfile, "w",encoding='utf-8')
lines = infp.readlines() #返回列表,包含所有的行。
#依次读取每行
for li in lines:
if li.split(): #str.split(str="", num=string.count(str)),过滤文件中的空行
# 根据识别情况对数据进行清洗
li = li.replace('[', ' ').replace(']', '')
outfp.writelines(li)
infp.close()
outfp.close()



로그인 후 복사

실행 결과

가 새 txt 파일을 생성합니다. 새 파일은 data.txt의 빈 줄을 삭제하고 원본 파일에서 잘못 인식된 내용을 올바른 파일로 바꿉니다.

writercsv(intxt,outcsv)

텍스트 파일을 csv 테이블에 공백으로 쓰기

  • intxt: 텍스트 파일 주소
  • outcsv: 새로 생성된 csv 파일
def writercsv(intxt,outcsv):
# 使用newlines=''可保证存储的数据不空行。
csvFile = open(outcsv, 'a',newline='', encoding='utf-8') 
writer = csv.writer(csvFile)
csvRow = []
f = open(intxt,'r',encoding='utf-8')
for line in f:
csvRow = line.split() #以空格为分隔符
if len(csvRow)>1 and len(csvRow)<=3:#约束条件,视情况而定
 writer.writerow(csvRow)
f.close()
csvFile.close()


로그인 후 복사

실행 결과

3열 생성 csv 파일에서 첫 번째 열은 영어 이름, 두 번째 열은 중국어 이름, 세 번째 열은 국가

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

image-20211215204846623

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

image-20211215204941725

Summary

이번 연구를 통해 우리는 스캔한 문서에서 텍스트를 추출하고 필요에 따라 해당 내용을 다양한 형식의 문서에 작성해야 한다는 것을 깨달았습니다.

처음에는 PDF 추출 라이브러리가 스캔된 문서에도 작동할 것이라고 생각하여 Pdfplumber 라이브러리와 PyPDF2 라이브러리를 사용해 보았습니다.

연습 결과 Pdfplumber는 스캔한 PDF의 워터마크만 인식할 수 있으며 스캔한 PDF에는 적합하지 않은 것으로 나타났습니다. PyPDF2 라이브러리가 실행되고 NotImplementedError: 알고리즘 코드 1과 2만 지원됩니다.

이 암호화된 PDF는 상위 버전의 acrobot에서 나올 수 있으므로 해당 암호화 알고리즘 코드는 '4'입니다. 그러나 기존 pypdf2 모듈은 '1' 또는 '2'의 암호화 알고리즘 코드 이름만 지원하는 것은 아닙니다. '암호화된 PDF 파일.

위 내용은 Python은 PD 텍스트 인식, 추출 및 CSV 파일 스크립트 공유로 쓰기를 실현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿