PDF OCR қажет пе? Толық қайта танудың орнына бетке алдын ала рейс жасау үшін PyMuPDF пайдаланыңыз

PDF файлын OCR жасағыңыз келсе, бүкіл PDF файлын қайта танудың қажеті жоқ. Мәтіндік қабаттың бар-жоғын және оның толық беттік кескін екенін әр бет бойынша анықтау үшін PyMuPDF пайдаланыңыз және тану үшін шынымен қажет беттерді ғана жіберіңіз. Қосылатын орындалатын үлгілер, айналмалы бет сынақтары және тармақ шекарасының нұсқаулары.

Көптеген командалар PDF аудармасы немесе мұрағаттаумен айналысқанда, олар бүкіл құжатты кіре берісте «сканерленген» немесе «көшірілетін» деп белгілеуге дағдыланады. 300 беттік PDF мәтіндік қабаттары бар алғашқы 280 бет және сканерленген тіркемелер ретінде соңғы 20 бет болуы мүмкін. Бүтін бөліктер бойынша жіктелсе, бүкіл OCR күту уақытын арттырады және бастапқы дұрыс сандарды қате анықтауы мүмкін. Екінші жағынан, егер сіз тек басты беттегі мәтінді көшіріп алсаңыз және барлық беттерде OCR өткізіп жіберсеңіз, бұл да қауіпті.

Неғұрлым сенімді әдіс - әрбір бетке алдын ала ұшу нәтижелерімен келесі қадамға өтуге мүмкіндік беру. Бұл мақала консервативті үш жақты бөлуді жүзеге асырады: тікелей шығару, OCR кандидаты кезегіне жіберу және қолмен тексеру. Бұл мәтін сапасын бағалауға арналған әмбебап классификатор емес, түсіндірілетін инженерлік эвристика. Оқып болғаннан кейін сіз орындалатын беттік алдын ала ұшу бағдарламасын, сондай-ақ ауытқу шекаралары мен ақауларды жою туралы жалпы идеяларды ала аласыз.

Бір сөйлем қорытынды

PDF үшін OCR қажет пе, жоқ па, соны анықтаудың қажеті жоқ. Бет-бет алдын ала тексеру үшін PyMuPDF пайдаланыңыз және тек шын мәнінде танылуы қажет беттерді OCR-ге жіберіңіз.

сіздің жағдайыңызҰсынылатын тәжірибелерсебебі
Бір беттен кемінде 40 бос орынсыз таңбаны шығарып алыңызТікелей алу (TEXT_CANDIDATE)Таңбалар әлдеқашан жеткілікті, бірақ жасырын нашар OCR қабаттарын анықтау керек
40 сөзден аз және беттің кемінде 70% қамтитын бір суретOCR кандидаты кезегіне жіберуТолық бетті сканерлеу сәйкестендіру үшін жарамды, бірақ таза фотосуреттер де жеткілікті.
Бос бет, вектор түрі, сирек тақырып немесе күрделі басқатырғышҚолмен тексеру (ШОЛУ)Бұл жағдайларды алғашқы екі санатқа сенімді түрде жіктеуге болмайды және оларды автоматты түрде өткізіп жіберуге немесе жоюға болмайды.
300 беттік гибридті құжатТолық өңдеу емесБірнеше сканерленген тіркемеге байланысты барлық беттерді OCR жасаудан аулақ болыңыз немесе негізгі бетте мәтін болғандықтан барлық OCR өткізіп жібермеңіз.

Ескертпе: Суреттегі мазмұн тұтынушы файлы немесе OmniDoc интерфейсі емес, төмендегі код арқылы жасалған синтезделген PDF файлынан келеді. Кескін бетіндегі мәтін растрлық пикселдер; мәтін бетіндегі мәтіннің нақты мәтіндік қабаты бар.

Алдымен нені тексеру керектігін шешіңіз

Мұнда екі сигнал пайдаланылады: бос орынды алып тастағаннан кейінгі мәтін таңбаларының саны және беттегі ең үлкен сурет алатын бет аймағының үлесі. Бұрынғылар «Таңбалар жеткілікті шығарылды ма?» деп жауап береді. және соңғысы толық бетті сканерлеу мен бос бетті ажыратуға көмектеседі. Беттегі кескінді үлкейту қатынасынан асып кетпеу үшін кескін аймағы алдымен қию жолағымен қиылысады.

бақылауОсы мақаланың бағытын өзгертуӘлі де назар аудару керек
Кемінде 40 бос орын жоқ таңбаTEXT_CANDIDATEЖасырын нашар OCR қабаттарында да көптеген сөздер болуы мүмкін
40 сөзден аз және кем дегенде 70% қамтитын бір суретOCR_CANDIDATEТаза фотосуреттер де шарттарға сай болады, OCR мәнді болмауы мүмкін
Қалған жағдайларШОЛУМұнда ақ кеңістік, вектор түрі, сирек тақырыптар және күрделі басқатырғыштар мүмкін

40 және 0,70 шектік мәндері осы сынақтар жинағын тексеруді жеңілдетуге арналған және тіларалық стандарттар емес. Қытай, формула, мұқаба және қысқа пішіндер бөлек калибрленген болуы керек. Мұнда қабаттасатын суреттердің аумақтарын қосудың орнына ең үлкен ауданы бар сурет түсіріледі, сондықтан бірнеше суреттерден тұратын сканерленген бет REVIEW ішіне түсуі мүмкін. Бұл әдейі сақталған шекара.

Толық орындалатын мысал

Үлгі PyMuPDF==1.28.0 пайдаланады, Tesseract-ке сенбейді және ешқандай онлайн OCR немесе аударма қызметтерін шақырмайды. Оны example.py ретінде сақтап, бос каталогта іске қосыңыз. Ол жасайтын файл атауы routing-fixture.pdf деп бекітілген. Нақты жобаларда енгізу файлын қайта жазбаңыз.

import json
import pymupdf

def inspect_page(page):
    chars = len("".join(page.get_text().split()))
    bounds = page.cropbox
    # 图片坐标与文本坐标都是未旋转坐标;不要混用旋转后的 page.rect。
    bounds = pymupdf.Rect(0, 0, bounds.width, bounds.height)
    ratios = []
    for image in page.get_image_info():
        rect = pymupdf.Rect(image["bbox"]) & bounds
        ratios.append(max(0, rect.get_area()) / bounds.get_area())
    largest = max(ratios, default=0.0)
    route = ("TEXT_CANDIDATE" if chars >= 40 else
             "OCR_CANDIDATE" if largest >= 0.70 else "REVIEW")
    return {"page": page.number + 1, "chars": chars,
            "largest_image_ratio": round(largest, 3), "route": route}

with pymupdf.open() as source:
    page = source.new_page(width=360, height=480)
    page.insert_text((28, 60), "Sample invoice 2026-09-26", fontsize=16)
    page.insert_text((28, 100), "Quantity 12   Unit price USD 15.00", fontsize=12)
    page.insert_text((28, 132), "Amount USD 180.00   Checked manually", fontsize=12)
    scan = page.get_pixmap(matrix=pymupdf.Matrix(2, 2)).tobytes("png")
    page = source.new_page(width=360, height=480)
    page.insert_image(page.rect, stream=scan)
    source.new_page(width=360, height=480)
    source.save("routing-fixture.pdf")

with pymupdf.open("routing-fixture.pdf") as pdf:
    result = [inspect_page(page) for page in pdf]
    assert [r["route"] for r in result] == [
        "TEXT_CANDIDATE", "OCR_CANDIDATE", "REVIEW"]
    assert result[1]["chars"] == 0
    assert result[1]["largest_image_ratio"] == 1.0
    pdf[1].set_rotation(90)
    assert inspect_page(pdf[1])["route"] == "OCR_CANDIDATE"
print(json.dumps(result, indent=2))

OCR қол жеткізген кезде, сәттілік белгісінің орнына мәтіндік бет кэштеледі.

PyMuPDF OCR интерфейсі - page.get_textpage_ocr(...). Тессеракт пен сәйкес тіл деректері бөлек дайындалуы керек. TextPage алғаннан кейін, сол бетті қайталап тануды болдырмау үшін оны келесі шығару кезінде textpage параметрі ретінде беру керек. Арнайы орнату әдістері мен параметрлерін PyMuPDF OCR құжаттамасы бөлімінен қараңыз.

Бұл мақала OCR қозғалтқышын іске қоспады, сондықтан сынақ нәтижелері бұру логикасы мен координаттарының дұрыс пайдаланылғанын ғана дәлелдей алады және қытай тілінің тану жылдамдығын, кестені қалпына келтіру жылдамдығын немесе аударма сапасын көрсетпейді. OCR қозғалтқышының нұсқасы, тіл бумасы, бет нөмірі, кіріс файлының қорытындысы және қолмен тексеру нәтижелері өндіріс ортасында жазылуы керек. Соңғы жолды ғана сақтамаңыз, әйтпесе белгілі бір санның қай беттен келетінін түсіндіру қиын болады.

Ең оңай жіберіп алатын ақаулардың үш түрі

Жасырын мәтін қабаты бұзылған болуы мүмкін. Егер таңбалар саны стандартқа жетсе, бұл тек «шығару әрекетін жалғастыра аласыз» дегенді білдіреді. Сондай-ақ ауыстыру таңбаларының, қайталанатын жолдардың және негізгі өрістердің көрсетуге сәйкестігін тексеру керек. Келісімшарт нөмірі және сома сияқты негізгі мазмұн кездейсоқ тексерілуі керек.

Векторлық жолдармен сызылған сөздер мәтін де, сурет те емес. Олар REVIEW кіреді. Оларды автоматты түрде бос деп белгілемеңіз және беттерді үнсіз тастамаңыз.

Құжатты жабу, содан кейін Бетті пайдалану жарамсыз нысандарды жасайды. with pymupdf.open(...) ауқымын сақтап, файлды шығармас бұрын алдын ала ұшуды, көрсетуді және шығарып алуды аяқтаңыз. Координаттар, кескін ақпараты және Беттің өмірлік циклі туралы қосымша мәліметтер алу үшін PyMuPDF Page API бөлімін қараңыз.

Сенімсіз PDF файлдарында бөлек процесте орнатылған файл өлшемі, бет саны, көрсетілген пикселдер, уақыт және жад көлемі де болуы керек. Мысал тек шағын файлдарды тексереді және зиянды файлдың құм жәшігін қамтамасыз етпейді. Өндірісте PyMuPDF қолданбас бұрын, оның лицензия шарттарын және тарату әдісіңізді де тексеруіңіз керек.

Аударма жұмыс үрдісін аударудан енгізіңіз

Білікті нәтиже мәтіннің тізбегі емес, бет нөмірлері мен шешімнің себептері бар жазба болып табылады. Аудармас бұрын қай беттерді сенімді түрде шығаруға болатынын растаңыз; аудармадан кейін мазмұнды, сандарды және орналасуды тексеріп, қабылдаңыз. Құжатты өңдеу қызметтерін OmniDoc өнім порталы сайтында көре аласыз. Осы мақаладағы жергілікті бағдарлама дербес жұмыс істейді және OmniDoc тіркелгісіне сенбейді және бұл өнім ішіндегі алгоритм екенін білдірмейді.

📊 Негізгі салыстыру

маршрутТриггер шартықолайлы бетНегізгі тәуекелдер
Тікелей алу (TEXT_CANDIDATE)Кемінде 40 бос орын жоқ таңбаБар мәтін қабаты бар мәтін бетіЖасырын нашар OCR қабатында бұзылған таңбалар болуы мүмкін
OCR кандидаты (OCR_CANDIDATE)40 сөзден аз және кем дегенде 70% қамтитын бір суретТолық бетті сканерлеуТаза фотосуреттер де шарттарға сәйкес келеді, бірақ OCR нәтижелері маңызды болмауы мүмкін.
Қолмен тексеру (ШОЛУ)Жоғарыдағы екі санатқа сәйкес келмейдіБос бет, векторлық тип, сирек тақырып, күрделі басқатырғышҚолмен бағалау қажет және оны автоматты түрде өткізіп жіберу немесе жою мүмкін емес.

🎯 Сізге қай әдіс қолайлы?

егер сіз……

  • Біз аралас құжаттармен айналысамыз, ал алдыңғы және артқы беттердің сапасы мүлдем басқа: бетті алдын ала тексеріп, сәйкесінше әртүрлі маршруттарды енгізіңіз.
  • Негізінен келісім-шарттар мен қаржылар сияқты негізгі сандарды қамтитын құжаттарды өңдеңіз: TEXT_CANDIDATE беті де сандар мен көрсету арасындағы сәйкестік үшін кездейсоқ тексерілуі керек.
  • Сканерлеуді пакеттермен өңдеу қажет: кері бақылауды жеңілдету үшін қозғалтқыш нұсқасын, тіл бумасын және OCR нәтижелеріне арналған бет нөмірін жазыңыз.
  • Белгісіз көздерден PDF файлдарын алу: Ресурс шектеулерін бөлек процесте орнатыңыз, оларды тікелей негізгі бағдарламада өңдемеңіз.

❓ Жиі қойылатын сұрақтар (ЖҚС)

1. Мәтінді басты бетте көшіруге болады. Бүкіл PDF файлының OCR нұсқасын өткізіп жіберуге болады ма?

мүмкін емес. Басты бетте мәтіндік қабат бар болғандықтан, ол келесі беттерде болады дегенді білдірмейді және оны бет бойынша бағалау керек.

2. Неліктен кескін аймақтарын тікелей қоспасқа?

Бір-бірімен қабаттасатын кескіндердің аумақтарын қосу қамтуды асыра бағалайды. Бұл мақала ең үлкен суретті пайдаланады, сондықтан бір-біріне тігілген бірнеше суреттері бар сканерленген бет REVIEW ішіне түсуі мүмкін, бұл шекара әдейі сақталады.

3. Егер таңбалар саны 40-қа жетсе, бұл мәтін сапасына қатысты мәселе жоқ дегенді білдіре ме?

Бұлай тұжырым жасауға болмайды. Жасырын нашар OCR қабаттарында да көптеген сөздер болуы мүмкін, сондықтан әлі де ауыстыру таңбаларын, қайталанатын жолдарды және нүктені тексеру кілт өрістерін тексеріңіз.

4. Векторлық жол бойынша сызылған мәтінді қалай өңдеу керек?

Олар мәтін де, кескіндер де емес, REVIEW-ке енеді, адамдар бағалайды және автоматты түрде бос деп белгіленбеуі немесе дыбыссыз түсірілмеуі керек.

5. Жергілікті бағдарлама OmniDoc тіркелгісіне тәуелді ме?

Тәуелді емес. Осы мақаланың жергілікті бағдарламасы тәуелсіз жұмыс істейді және ешқандай онлайн OCR немесе аударма қызметтерін шақырмайды.

📝 Түйіндеме

Алдымен дәлелдемелерді парақтап қалдырыңыз, содан кейін OCR жасауды шешіңіз. Белгісіз нәтижелерді сәттілік ретінде жасырудан гөрі, белгісіз беттерді кезекте қалдыру пайдалырақ.

Қазір қолданып көріңіз: түпнұсқа орналасуын сақтай отырып, аударманы бастау үшін құжатты жүктеп салыңыз

Жаңартылған 2026-11-15