[OCR] PaddleOCR 축산물 이력번호 인식 모델 학습 성공 과정

2026. 2. 7. 18:19·1. AI 논문 + 모델 분석/AI 모델 분석

PaddleOCR 축산물 이력번호 인식 모델 학습 과정

MeatHub 프로젝트 — AI 서버 OCR 엔진 파인튜닝 전체 과정 문서

 

안녕하세요!

오늘은 오랜 앙숙이였던 PaddleOCR에 학습을 성공한 내용 정리와 학습을 통해 OCR 성능을 향상 시킨 내용을 정리해봤습니다.


목차

  1. 프로젝트 개요
  2. 환경 구성 및 버전 관리
  3. 데이터 준비 파이프라인 (Step 0–3)
  4. 사전학습 모델 선정 과정
  5. 모델 아키텍처 및 학습 설정
  6. 학습 중 발생한 문제와 해결
  7. 학습 결과 및 성능
  8. 추론 파이프라인 (Step 5)
  9. 프로덕션 통합 (ocr_engine.py)
  10. 파일 구조 요약

1. 프로젝트 개요

1-1 목표

축산물 이력번호 라벨 이미지에서 이력번호를 자동 인식하는 OCR 모델을 학습시킨다.

1-2 인식 대상 패턴

유형 형식 예시
국내산 이력번호 숫자 12자리 002188519524
국내산 묶음번호 L + 숫자 14자리 L12601205379002
수입산 묶음번호 A + 숫자 19~29자리 A41535850069100026012505

1-3 하이브리드 아키텍처

  • 텍스트 탐지(Detection): EasyOCR — 이미지에서 텍스트 영역(bbox)을 탐지
  • 문자 인식(Recognition): PaddleOCR — 탐지된 영역의 문자를 인식 (파인튜닝 대상)

이렇게 분리한 이유:

EasyOCR의 한글+영문 탐지 성능은 우수하지만, 숫자 인식 정확도가 부족. PaddleOCR rec 모델을 우리 데이터로 파인튜닝하여 인식 정확도를 높인다.


2. 환경 구성 및 버전 관리

2-1 Python 환경

항목 값
Python 3.x (venv)
venv 경로 Meat_A_Eye-aimodels/venv/
Python 실행 venv/Scripts/python.exe

2-2 핵심 패키지 버전

패키지 버전 설치 방법 비고
PaddlePaddle GPU 3.2.2 PaddlePaddle 공식 미러 (CUDA 12.6) pip install paddlepaddle-gpu==3.2.2 -i https://www.paddlepaddle.org.cn/packages/nightly/cu126/
PaddleOCR GitHub clone git clone --depth 1 PaddleOCR pip 패키지는 tools/train.py 미포함 → 소스 직접 클론
EasyOCR 1.7.2 pip install easyocr 텍스트 탐지용
PyTorch (기존 설치) — 고기 부위 분류 모델용 (EfficientNet)
CUDA 12.6 NVIDIA Driver 591.86 GPU compute capability 8.9

2-3 PaddleOCR pip 패키지를 사용하지 않는 이유

PaddleOCR pip 패키지(paddleocr)는 추론용 경량 패키지로, 학습에 필요한 tools/train.py가 포함되어 있지 않다. 또한 3.x 버전부터 paddlex 의존성이 추가되어 설치가 복잡하다.

해결: PaddleOCR GitHub 리포지토리를 ai-server/OCR/PaddleOCR/에 shallow clone하여 학습 스크립트(tools/train.py)를 직접 사용한다.

git clone --depth 1 https://github.com/PaddlePaddle/PaddleOCR.git

2-4 PaddlePaddle GPU 설치

PaddlePaddle GPU는 PyPI가 아닌 공식 미러에서 설치해야 CUDA 버전에 맞는 바이너리를 받을 수 있다:

pip install paddlepaddle-gpu==3.2.2 -i https://www.paddlepaddle.org.cn/packages/nightly/cu126/

3. 데이터 준비 파이프라인

전체 데이터 흐름

원본 이미지 + JSON 어노테이션
    │
    ▼
[Step 0] 어노테이션 해상도/회전 보정 (274건 수정)
    │
    ▼
[Step 1] EasyOCR로 bbox 재탐지 + 원본 텍스트 라벨 유지
    │  출력: relabeled/{split}/
    ▼
[Step 2] 시각적 검증 (원본 vs 보정 bbox 비교 미리보기)
    │  출력: relabeled/preview/
    ▼
[Step 3] bbox 영역 크롭 → PaddleOCR rec 학습 데이터셋 생성
    │  출력: rec_dataset/ (crop_images + 라벨 txt + dict.txt)
    ▼
[Step 4] PP-OCRv4 rec 파인튜닝
    │  출력: rec_output/ (best_accuracy.pdparams)
    ▼
[Step 5] 추론: EasyOCR det → PaddleOCR rec → 이력번호 필터링

3-1 어노테이션 보정 (step0_fix_annotations.py)

문제:

원본 어노테이션의 image_size와 실제 이미지 해상도가 불일치. 이미지가 촬영 이후 회전되거나 리사이즈된 경우 bbox 좌표가 맞지 않는 문제.

 

해결:

  • 실제 이미지 해상도를 읽어서 image_size 업데이트
  • bbox 좌표를 비례적으로 스케일링 (scale_bbox())
  • 회전이 필요한 경우 CW/CCW 자동 감지 (bbox 중심점 위치 기반 다수결 투표)
  • 총 274건 어노테이션 수정

어노테이션 JSON 형식:

{
  "image_size": [width, height],
  "objects": [
    {"bbox": [x1, y1, x2, y2], 
    "text": "L02602045978929"}
  ]
}

3-2 bbox 재탐지 (step1_relabel.py)

문제: 수작업 어노테이션 bbox가 부정확하여 크롭 시 텍스트가 잘릴 수 있음.

해결: EasyOCR 탐지기로 bbox를 자동 재생성하되, 텍스트 라벨(정답)은 원본 어노테이션에서 유지.

  • 삭제된 이미지 자동 스킵
  • 원본 데이터 미수정 → relabeled/ 별도 폴더에 저장
  • 이력번호 패턴 매칭으로 텍스트 필터링

3-3 시각적 검증 (step2_verify.py)

원본 bbox(파란색)와 보정 bbox(초록색)를 이미지 위에 오버레이하여 비교.
결과물은 relabeled/preview/에 저장하여 수작업 확인.

3-4 학습 데이터셋 생성 (step3_gen_rec_data.py)

relabeled bbox 영역을 크롭하여 PaddleOCR SimpleDataSet 형식으로 변환:

rec_dataset/
├── crop_images/
│   ├── trace_0001_0.jpg
│   ├── trace_0002_0.jpg
│   └── ...
├── rec_train.txt       ← "crop_images/trace_0001_0.jpg\tL02602045978929"
├── rec_val.txt
├── rec_test.txt
└── dict.txt            ← 학습에 사용되는 문자 집합

크롭 파라미터:

  • TARGET_HEIGHT = 48 (너비는 비율 유지)
  • pad_ratio = 0.05 (bbox 주변 5% 패딩)
  • 라벨 형식: 탭 구분 (이미지경로\t라벨텍스트)

4. 사전학습 모델 선정 과정

4-1 첫 번째 시도: 중국어 모델 (실패)

처음에는 PaddleOCR 기본 모델(중국어, ch_PP-OCRv4_rec)을 사용하여 학습을 시도하였다.

결과: 100 에포크 동안 정확도 0%

원인 분석: 중국어 모델은 딕셔너리가 6,623자(한자 포함)로 매우 크며, 모델 헤드 차원(Head dimension)이 이에 맞게 설정되어 있다. 우리 데이터는 0-9, A, L 총 12종의 문자만 사용하므로, 헤드 차원 불일치로 인해 사전학습 가중치가 올바르게 로드되지 않았다.

4-2 두 번째 시도: 영어 모델 (성공)

모델: en_PP-OCRv4_rec_train (영어/숫자용)

  • 딕셔너리: en_dict.txt — 95자 (0-9, A-Z, a-z, 특수문자)
  • 다운로드 URL: https://paddleocr.bj.bcebos.com/PP-OCRv4/english/en_PP-OCRv4_rec_train.tar

선정 이유:

  1. 우리 데이터의 문자 집합(0-9, A, L)이 영문 딕셔너리에 완전히 포함됨
  2. 95자 딕셔너리이므로 헤드 차원이 적당하여 사전학습 가중치를 온전히 활용할 수 있음
  3. 커스텀 딕셔너리(12자)를 사용하면 사전학습 가중치의 FC 레이어를 처음부터 학습해야 하므로 비효율적

핵심 결정: 커스텀 딕셔너리 대신 PaddleOCR 내장 en_dict.txt를 그대로 사용하여 사전학습 가중치를 최대한 활용.

딕셔너리 경로: PaddleOCR/ppocr/utils/en_dict.txt
문자 수: 95자 (blank + 93 printable chars + space)

5. 모델 아키텍처 및 학습 설정

5-1 모델 아키텍처

항목 설정
Algorithm SVTR_LCNet
Backbone PPLCNetV3 (scale=0.95)
Head MultiHead (CTCHead + NRTRHead)
Loss MultiLoss (CTCLoss + NRTRLoss)
PostProcess CTCLabelDecode

 

MultiHead 구조:

Head:
  name: MultiHead
  head_list:
    - CTCHead:
        Neck:
          name: svtr
          dims: 120
          depth: 2
          hidden_dims: 120
          kernel_size: [1, 3]
          use_guide: True
        Head:
          fc_decay: 0.00001
    - NRTRHead:
        nrtr_dim: 384
        max_text_length: 25

5-2 학습 하이퍼파라미터

파라미터 값 비고
Optimizer Adam β1=0.9, β2=0.999
Learning Rate 0.0005 Cosine 스케줄
Warmup 2 에포크  
Regularizer L2 (3e-05)  
Batch Size (train) 32  
Batch Size (eval) 128  
Workers 4  
Image Shape [3, 48, 320] H=48, W=320
Augmentation RecConAug (p=0.5), RecAug  
Save Interval 매 5 에포크  
Eval Interval 매 50 스텝  
Max Text Length 25 이력번호 최대 길이 충분

5-3 학습 설정 파일

학습 설정은 step4_train_paddle_rec.py가 자동으로 rec_train_config.yml를 생성한다:

python step4_train_paddle_rec.py --epochs 20 --gpu

6. 학습 중 발생한 문제와 해결

6-1 PaddlePaddle + PyTorch DLL 충돌 (Windows)

증상: import paddle 후 import torch하면 shm.dll 로드에 실패.

 

원인 체인:

PaddleOCR 학습 시작
  → ppocr.data.imaug.iaa_augment 임포트
    → albumentations 임포트
      → torch 임포트
        → shm.dll 로드 실패 (PaddlePaddle이 먼저 로드한 DLL과 충돌)

 

해결 (3개 패치):

  1. iaa_augment.py 패치: albumentations(→torch) 임포트를 제거하고, imgaug가 없어도 동작하는 안전한 fallback 코드로 교체. rec 학습에서는 IaaAugment를 사용하지 않으므로 기능 손실 없음.
  2. PaddleOCR/ppocr/data/imaug/__init__.py 패치: latex_ocr_aug와 unimernet_aug 임포트를 try/except로 감싸서 선택적 의존성 실패 시에도 정상 진행.
  3. PaddleOCR/tools/program.py 패치: PaddlePaddle 3.x에서 dist.ParallelEnv().dev_id 속성이 제거되어 AttributeError 발생 → "gpu:0" 기본값으로 fallback.

6-2 중국어 모델 정확도 0% (100 에포크)

증상: 학습은 진행되지만 train/eval 정확도가 모두 0%로 고정.

 

원인: 중국어 사전학습 모델의 딕셔너리(6,623자)와 파인튜닝 딕셔너리(12자)의 차원 불일치. FC 레이어의 가중치를 로드할 수 없어 랜덤 초기화 상태에서 학습하는 것과 같은 효과.

 

해결: 영어 모델(en_PP-OCRv4_rec_train)로 교체하고, PaddleOCR 내장 en_dict.txt(95자)를 그대로 사용. → 사전학습 모델 선정 과정 참조

6-3 Windows eval 정확도 0% 버그

증상: 학습(train) 정확도는 96%~100%인데, 평가(eval) 정확도가 항상 0%.

원인: PaddleOCR/tools/program.py에서 eval 루프의 조기 종료 조건:

max_iter = len(dataloader) - 1  # eval 데이터가 1 배치만 있으면 → 0

우리 eval 데이터셋이 작아서 1 배치로 처리되고, max_iter = 0이 되면서 단 한 배치도 평가하지 않고 루프가 종료됨.

 

해결:

max_iter = max(len(dataloader) - 1, 1)  # 최소 1 반복 보장

6-4 PaddleOCR pip paddlex 의존성 문제

증상: from paddleocr import PaddleOCR → paddlex 모듈을 찾을 수 없음 (PaddleOCR 3.x).

해결: paddleocr pip 패키지의 추론 API를 사용하지 않고, .pdparams 파일에서 모델 가중치를 직접 로드하는 경량 추론 클래스(PaddleRecInfer)를 자체 구현.

6-5 paddle.inference PIR 포맷 비호환

증상: paddle.inference API로 추론 모델 로드 시 PIR 포맷 관련 에러.

해결: 정적 추론 모델(.pdmodel/.pdiparams) 대신 동적 로딩 방식(.pdparams 직접 로드)을 사용. PaddleRecInfer 클래스가 모델 아키텍처를 코드에서 재구성하고 가중치만 로드.


7. 학습 결과 및 성능

7-1 최종 학습 결과

지표 값
Train Accuracy 96.8% ~ 100%
Eval Accuracy 99.99%
Best Epoch 9/17
모델 파일 rec_output/best_accuracy.pdparams

7-2 추론 성능 테스트

테스트 환경:

  • GPU: NVIDIA (compute capability 8.9)
  • 입력: bbox 크롭 이미지 (Step 5 eval 모드)
지표 값
크롭 인식 정확도 26/29 = 89.7%
평균 처리 시간 ~1.69초/이미지

7-3 프로덕션 통합 테스트

테스트: test_ocr_engine.py - 54장의 실제 이미지 (파일명이 정답)

지표 값
정확도 48/54 = 88.9%
GPU ON (기본)
2x 확대 제거됨 (원본 해상도 사용)

 

6건 오류 유형:

  • A-포맷(수입산 25자리) 인식 실패: 긴 숫자 시퀀스에서 일부 문자 누락/오인식
  • 12자리 숫자 오탐지: 가격/중량 등의 숫자가 이력번호로 잘못 인식

8. 추론 파이프라인 (Step 5)

PaddleRecInfer 클래스 (경량 추론기)

PaddleOCR pip 패키지 없이 .pdparams 파일에서 직접 모델을 로드하는 경량 추론 클래스:

class PaddleRecInfer:
    def __init__(self, model_dir, dict_path, use_gpu=True):
        # 1. 딕셔너리 로드: ["blank"] + dict_chars + [" "]
        # 2. 모델 아키텍처 코드에서 재구성 (PPLCNetV3 + MultiHead)
        # 3. best_accuracy.pdparams 가중치 로드

    def predict(self, img_bgr):
        # 1. 이미지 전처리: H=48 고정, W 비례 축소 (최대 320)
        # 2. 정규화: /255 → -0.5 → /0.5
        # 3. 우측 제로패딩 → [1, 3, 48, 320] 텐서
        # 4. 모델 추론 → CTC 디코딩 (argmax → 중복 제거)
        return text, confidence

HybridOCR 클래스 (Step 5 전용)

이미지 입력
    │
    ▼
[전처리] Bilateral Filter / Adaptive Threshold (2가지 앙상블)
    │
    ▼
[EasyOCR 탐지] 텍스트 영역 bbox 추출
    │
    ▼
[수평 병합] 가까운 bbox 수평 병합 (이력번호가 여러 줄로 분리된 경우)
    │
    ▼
[PaddleOCR 인식] 각 bbox 크롭 → 문자 인식
    │
    ▼
[패턴 필터링] 이력번호 패턴 매칭 (12자리/L15자리/A20~30자리)
    │
    ▼
[선택] 앵커 근접도 + 패턴 정확도 + 신뢰도 기반 최적 결과 선택

9. 프로덕션 통합 (ocr_engine.py)

9-1 아키텍처

ocr_engine.py는 main.py에서 from ocr_engine import extract_text로 임포트되어 사용된다.

프론트엔드 (imagePreprocessing.ts)
  → 이미지 리사이즈 (max 3840px) + JPEG 압축 (quality 0.95)
  → FormData로 전송

백엔드 (main.py)
  → process_web_image(contents): bytes → BGR → RGB numpy 변환
  → extract_text(img_array): OCR 수행

ocr_engine.py
  → RGB → BGR 변환
  → MeatTraceabilityOCR.extract(img=bgr_numpy)
     → EasyOCR det + PaddleOCR rec 하이브리드
  → 이력번호 패턴 필터링 → 결과 반환

9-2 JPEG 재압축 문제

문제: 초기 구현에서 extract_text()가 numpy 배열을 임시 JPEG 파일로 저장한 후 다시 읽어서 OCR을 수행. 이로 인해 이미지가 이중 JPEG 압축을 겪어 품질이 저하됨.

[변경 전] 이미지 품질 경로:
  원본 → 프론트엔드 JPEG 0.95 (1차 손실)
       → 백엔드 cv2.imwrite(.jpg) 임시파일 (2차 손실)
       → OCR 인식

[변경 후] 이미지 품질 경로:
  원본 → 프론트엔드 JPEG 0.95 (1차 손실, 불가피)
       → 백엔드 numpy 배열 직접 전달 (손실 없음)
       → OCR 인식

 

수정 내용:

  • extract_text(): 임시 JPEG 파일 생성 제거 → BGR numpy 배열을 extract(img=...) 로 직접 전달
  • extract(): image_path (파일 경로) 또는 img (numpy 배열) 둘 중 하나를 받을 수 있도록 인터페이스 확장
  • tempfile 임포트 제거

9-3 주요 설정

항목 설정 비고
GPU 기본 ON use_gpu=True
2x 확대 제거됨 원본 해상도 유지
EasyOCR 언어 ['ko', 'en'] 한글 키워드("이력", "번호") 탐지용
전처리 Bilateral + Adaptive (앙상블) 2가지 전처리로 탐지 안정성 향상

10. 파일 구조 요약

ai-server/
├── ocr_engine.py              ← 프로덕션 OCR 엔진 (main.py에서 사용)
├── ocr_engine_backup.py       ← 수정 전 백업
├── main.py                    ← FastAPI 서버 (beef/pork/ocr 모드)
├── web_processor.py           ← 업로드 이미지 디코딩
│
└── OCR/                       ← 학습 파이프라인 전체
    ├── step0_fix_annotations.py     ← 어노테이션 해상도/회전 보정
    ├── step1_relabel.py             ← EasyOCR bbox 재탐지
    ├── step2_verify.py              ← bbox 시각적 검증
    ├── step3_gen_rec_data.py        ← 크롭 → rec 학습 데이터셋
    ├── step4_train_paddle_rec.py    ← PP-OCRv4 rec 파인튜닝 (핵심)
    ├── step5_inference.py           ← 추론 + 평가 스크립트
    ├── test_ocr_engine.py           ← 프로덕션 엔진 성능 테스트
    ├── bbox_editor.html             ← bbox 편집 웹 도구
    │
    ├── rec_train_config.yml         ← 자동 생성된 학습 설정
    ├── pretrained/                  ← 사전학습 가중치 (en_PP-OCRv4)
    ├── rec_dataset/                 ← Step 3 결과 (크롭 이미지 + 라벨)
    ├── rec_output/                  ← 학습 결과 모델
    │   ├── best_accuracy.pdparams   ← 최고 성능 모델 (eval 99.99%)
    │   └── latest.pdparams
    └── PaddleOCR/                   ← GitHub clone (DLL 패치 적용됨)
        ├── tools/train.py           ← 학습 실행 진입점
        └── ppocr/utils/en_dict.txt  ← 95자 딕셔너리

부록: 학습 실행 명령어

# 1. venv 활성화
cd Meat_A_Eye-aimodels
.\venv\Scripts\activate

# 2. Step 0-3: 데이터 준비 (순서대로)
cd ai-server/OCR
python step0_fix_annotations.py --apply
python step1_relabel.py
python step2_verify.py
python step3_gen_rec_data.py

# 3. Step 4: 학습 (GPU, 20 에포크)
python step4_train_paddle_rec.py --epochs 20 --gpu

# 4. Step 5: 추론 테스트
python step5_inference.py --eval          # 크롭 이미지 평가
python step5_inference.py --image <path>  # 단일 이미지 추론

# 5. 프로덕션 엔진 테스트
python test_ocr_engine.py
python ocr_engine.py  # CLI 모드

마무리⭐

이번 AI 학습을 통해 또 다시 머리 속에 각인 시킨게 있다. AI를 사용해 로직을 짜더라도 흐름을 이해해야 하며, 학습을 실패하는 원인을 깊게 생각한다면 해답은 나온다.

PaddleOCR 학습은 웹서핑을 하더라도 학습을 성공한 사례(성능 향상)는 없으며, 학습 로직을 짜놓은 블로거는 많지만 실제 학습을 돌려서 성공한 사례나 블로그는 찾기가 매우 어려운거 같다.

 

합성 데이터 가지곤 안 됐던 이유, 데이터 수집과 정제를 진행했어도 안 됐던 이유 등을 팀원들에게 스터디를 진행할 예정이다. 이제 나는 오랜 앙숙 같았던 PaddleOCR 학습을 성공했고, 다른 학습에 어려움이 있어도 더 쉽게 해결할 수 있을 거 같다.

 

이번 학습의 핵심은 AI모델이 "무엇을", "어디를" 바라보는지 확인을 해보았고, "우리 프로젝트의 목적"에 맞는 정제 작업을 진행했다는 것이다. 이번 Meat-A-Eye 프로젝트 설계의 목표 지표를 월등히 뛰어넘는 목적을 달성했는데 혼자 막 심장이 뛰고 즐거운거 같다!

'1. AI 논문 + 모델 분석 > AI 모델 분석' 카테고리의 다른 글

[LLaVA] 학습 스크립트로 보는 멀티모달 모델의 구현 원리  (0) 2026.02.20
[Meat-A-Eye] 파인튜닝을 통한 정확도 70% → 90% 개선 정리  (0) 2026.02.05
[OCR] PaddleOCR Rec 학습 원리 및 소량 데이터 분석  (0) 2026.02.04
[Vision] MobileNet 모델 조사 및 실험 | 논문 리뷰  (0) 2026.01.26
EfficientNet-B0와 Grad-CAM 분석해보기  (0) 2026.01.18
'1. AI 논문 + 모델 분석/AI 모델 분석' 카테고리의 다른 글
  • [LLaVA] 학습 스크립트로 보는 멀티모달 모델의 구현 원리
  • [Meat-A-Eye] 파인튜닝을 통한 정확도 70% → 90% 개선 정리
  • [OCR] PaddleOCR Rec 학습 원리 및 소량 데이터 분석
  • [Vision] MobileNet 모델 조사 및 실험 | 논문 리뷰
고니3000원
고니3000원
공부 내용 정리, 자기발전 블로그 입니다. 기존 네이버 블로그에서 티스토리로 이전했습니다. https://blog.naver.com/pak1010pak
  • 고니3000원
    곤이의 공부 블로그
    고니3000원
  • 전체
    오늘
    어제
    • 분류 전체보기 (176)
      • 1. AI 논문 + 모델 분석 (19)
        • AI 논문 분석 (13)
        • AI 모델 분석 (6)
      • 2. 자료구조와 알고리즘 (16)
        • 2-1 자료구조와 알고리즘 (13)
        • 2-2 강화학습 알고리즘 (3)
      • 3. 자습 & 메모(실전, 실습, 프로젝트) (25)
        • 3-1 문제 해석 (4)
        • 3-2 메모(실전, 프로젝트) (14)
        • 3-3 배포 실전 공부 (7)
      • 4. [팀] 프로젝트 및 공모전 (14)
        • 4-1 팀 프로젝트(메모, 공부) (1)
        • 4-2 Meat-A-Eye (6)
        • 4-3 RL-Tycoon-Agent (3)
        • 4-4 구조물 안정성 물리 추론 AI 경진대회(D.. (4)
      • 5. [개인] 프로젝트 및 공모전 (0)
        • 4-1 귀멸의칼날디펜스(자바스크립트 활용) (5)
        • 4-2 바탕화면 AI 펫 프로그램 (4)
        • 4-3 개인 프로젝트(기타) (3)
      • 개념 정리 step1 (32)
        • Python 기초 (7)
        • DBMS (1)
        • HTML | CSS (3)
        • Git | GitHub (1)
        • JavaScript (5)
        • Node.js (5)
        • React (1)
        • 데이터 분석 (6)
        • Python Engineering (3)
      • 개념 정리 step2 (56)
        • Machine | Deep Learning (15)
        • 멀티모달(Multi-modal) (23)
        • 강화 학습 (10)
        • AI Agent (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 곤이의 블로그(Naver->Tistory)
    • Github
  • 공지사항

  • 인기 글

  • 태그

    github
    파인튜닝
    프로젝트
    알고리즘
    ViT
    html
    데이터분석
    논문 리뷰
    transformer
    bottleneck
    OCR
    Attention Is All You Need
    구현
    자료구조
    paddleocr
    OCR학습
    Python
    파이썬
    귀칼
    pandas
    Grad-CAM
    javascript
    학습
    공모전
    자바스크립트
    Vision
    Ai
    강화 학습
    강화학습
    EfficientNet
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고니3000원
[OCR] PaddleOCR 축산물 이력번호 인식 모델 학습 성공 과정
상단으로

티스토리툴바