Jinsi OCR Husoma PDF Iliyoskaniwa, na Kwa Nini Zana Hii Hurudisha Markdown
PDF iliyoskaniwa ni picha ya maandishi. Kituo hiki hurudisha Markdown, si PDF yenye tabaka la siri. Auto hutumia maandishi yaliyopo; Force husoma kila ukurasa.

PDF iliyoskaniwa huhifadhi kurasa kama picha za rasta, yaani picha za maandishi, si herufi zinazoweza kuchaguliwa. OCR (utambuzi wa herufi kwa macho) huchunguza pikseli hizo, hukisia umbo gani ni herufi, na hutoa maandishi halisi. Kwenye PDF123 hiyo huendeshwa kama zana ya kivinjari bila malipo na kama POST /api/v1/misc/ocr-pdf; jibu ni Markdown, si PDF iliyoandikwa upya.
Skani bado ni picha
OCR haisafishi, haichanui wala kubadilisha picha ya biti. Skani iliyo wazi ambayo OCR inaisoma vibaya bado inaonekana wazi. Picha haikuwa kikwazo cha ubora; utambuzi ndio ulikuwa: badilisha injini ya utambuzi kwenye kundi lilelile la skani na usahihi unaweza kubadilika kwa kiwango kikubwa, ingawa pikseli zenyewe hazijaguswa hata kidogo.
OCR ya PDF ya kitamaduni huandika tabaka la pili la maandishi lisiloonekana lililolingana chini ya picha ili kuchagua na kutafuta kuangukie maneno sahihi. Hiyo ndiyo inayoonyeshwa kwenye mchoro, na ndiyo jinsi zana nyingi za kompyuta ya mezani bado zinafanya kazi.
Kituo hiki hurudisha nini hasa
Njia ya OCR huita /api/v1/misc/ocr-pdf, ambayo huendeshwa kwenye crate huru ya Rust, pdf-inspector (iliyojengwa na kipengele chake cha ocr). Haitoi PDF nzima kwa mfano wa utambuzi. Kwanza, pdf-inspector huainisha kila ukurasa kama una maandishi asilia yanayoweza kutolewa au kama ni picha pekee. Kurasa zenye maandishi asilia huyaacha maandishi hayo jinsi yalivyo na haziguswi kamwe na mfano wa utambuzi; kurasa za picha pekee hupitia mtiririko wa utambuzi badala yake—PDFium (kirekebishi hicho hicho cha chanzo huria ambacho Chrome hutumia ndani yake) huchora ukurasa kama picha, kisha ONNX Runtime huendesha mfano wa PP-OCRv6 Small kuusoma. Aina zote mbili za kurasa huunganishwa kwa mpangilio kuwa hati moja ya Markdown, ndiyo maana jibu ni text/markdown na upakuaji huishia kwa .md.
Mkataba huo ni mpya kwa marekebisho haya. Backend ya Java/Spring Boot ambayo mradi huu ulikuwa akiiendesha hapo awali iliita OCRmyPDF, mbinu ya kitamaduni ya "picha pamoja na tabaka la maandishi lililofichwa", na ilirudisha PDF. Marekebisho ya Rust yalibadilisha njia hiyo kabisa na OCR teule ya pdf-inspector, na matokeo yakahamia kutoka PDF kwenda Markdown pamoja na hilo. Backend ya zamani ya Java imeondolewa kabisa kwenye hazina tangu wakati huo; si mpangilio unaoweza kubadilishwa tena.
Kama unahitaji PDF inayoweza kutafutwa (picha pamoja na tabaka la maandishi), njia hii haiwezi kukupa hiyo. Inakupa maandishi ambayo ajenti au mtiririko wa data unaweza kutumia moja kwa moja.
Auto dhidi ya Force OCR
Fomu ina sehemu ya ocrType:
- Normal (kitu chochote kingine isipokuwa
force-ocr) huelekea Auto: tumia maandishi yaliyopo pale faili inapokuwa nayo; endesha OCR kwenye kurasa za picha pekee. Kwenye PDF safi ya kidijitali, Auto haipakia mazingira ya utekelezaji ya OCR. - Force OCR (
ocrType=force-ocr) huendesha utambuzi upya kwenye kila ukurasa, ikiwemo kurasa ambazo tayari zina tabaka la maandishi. Huchukua muda, si usahihi wa ziada, kwenye kurasa halisi za picha pekee; hupata mwendo unaopuuza tabaka lililopo lililovunjika au pungufu.
Chaguo-msingi la jukwaa ni Force OCR. Hakuna kipengele cha kuchagua lugha: misimbo ya tessdata iliyobaki kutoka njia ya zamani ya Java hupuuzwa.
Mgawanyo kati ya Auto na Force hutokea ndani ya ombi lenyewe, na wala jukwaa wala kipimo cha uwezo cha API hakikagui hilo mapema kwa niaba yako. GET /api/v1/settings/get-endpoints-status daima huripoti ocr-pdf kama imewezeshwa, bila kuthibitisha kwa hakika kama PDFium, ONNX Runtime, au mfano wa PP-OCRv6 vimewekwa. Ukaguzi wa kweli hutokea tu wakati ombi linapoanzisha utambuzi: kama chochote kati ya hivyo hakipo, njia hurudisha 503, si Markdown iliyopunguzwa inayorudi kimya kimya kwenye maandishi asilia pekee. Mfano wa PP-OCRv6 Small wenyewe una ukubwa wa takribani 31 MB; isipokuwa umepandwa mapema kwenye hifadhi ya ndani wakati wa kutuma, hupakuliwa kupitia mtandao mara ya kwanza ukurasa unapohitaji utambuzi kwa dhati. Mashine iliyo nje ya mtandao bila mfano uliopandwa mapema kuna uwezekano mkubwa itashindwa papo hapo kwenye ombi lake la kwanza la Force, badala ya kuwa tu polepole.
Utambuzi unatokana na uwezekano
Mitambo hulinganisha mifumo ya pikseli na mifano ya herufi na maneno. Hufanya vizuri kwenye maandishi safi, yenye utofautishaji mkubwa na fonti za kawaida, na hufanya vibaya kwenye:
- Skani zenye azimio la chini au utofautishaji mdogo (ubora wa faksi dhidi ya asili ya 300 DPI)
- Maandishi ya mkono, fonti za mapambo, mipangilio ya kigeni (jedwali za safu nyingi, maandishi yaliyozungushwa, fomu zilizojaa)
- Kurasa zilizopotoka zinazoharibu umbo la herufi kiasi cha kutosha kuchanganya ulinganishaji
Faksi yenye ukungu haitasomwa na OCR kama skani safi, bila kujali Auto au Force. Hii ni kikomo cha mfano wenyewe, si kitu ambacho kigezo kinaweza kukirekebisha.
Kile OCR haifanyi
OCR hukupa maandishi. Haiundi upya aya, vichwa, jedwali, wala hati ya Word inayoweza kumwagika. Mpangilio unaoweza kuhaririwa ni tatizo la ubadilishaji juu ya hitilafu za utambuzi; si kazi moja na kusoma skani.
OCR ya PDF huendeshwa upande wa seva bila akaunti. Upakuaji ni Markdown. Kama tabaka la maandishi lililopo linaonekana vibaya, tumia Force OCR ili Auto isilitegemee tabaka hilo; kuangalia kama mashine fulani kwa hakika ina PDFium na mfano vimewekwa, kuendesha ombi halisi ni njia ya kuaminika zaidi kuliko kusoma hali ya kipimo cha uwezo, kwa kuwa kipimo hicho kinathibitisha tu kuwa njia ipo, si kuwa mazingira yake ya uendeshaji yako tayari. Kwa funguo za uendeshaji wa kiotomatiki na OpenAPI, ona Watengenezaji.