Co właściwie robi narzędzie OCR PDF
Zeskanowany PDF wygląda jak tekst, ale nim nie jest. To stos zdjęć tekstu — bitmap, które Twój aparat lub skaner przechwycił, upchnięte w opakowaniu PDF. Gdy wciskasz Cmd-F, by szukać, nic się nie dzieje. Gdy zaznaczasz akapit, kursor przejeżdża po pikselach i niczego nie łapie. To dlatego, że w pliku nie ma tekstu, tylko wygląd tekstu. Narzędzie OCR PDF to naprawia. Renderuje każdą stronę do canvasu z pdfjs-dist, a potem uruchamia Tesseract.js — port WebAssembly otwarto-źródłowego silnika Tesseract — żeby odczytać znaki z pikseli. Dostajesz prawdziwy plik .txt z rozpoznanymi słowami. Wszystko dzieje się w Twojej przeglądarce. Twój skan nigdy nie opuszcza maszyny.
Ta ostatnia część to cały sens. OCR jest online od dwóch dekad; wybierz jedno z OnlineOCR.net, SmallPDF, iLovePDF, web Adobe Acrobat — wszystkie to zrobią. Każdy z nich najpierw wyśle Twój dokument. To jest w porządku dla ulotki. Nie jest w porządku dla podpisanej umowy pożyczki, dokumentacji medycznej, skanu paszportu, formularza imigracyjnego, deklaracji podatkowej ani innych rzeczy, które ludzie faktycznie OCR-ują. Tesseract uruchamia to samo rozpoznawanie lokalnie; my po prostu zrobiliśmy opakowanie, które pozwala przeglądarce go uruchomić.
Jak używać narzędzia OCR PDF
Narzędzie to jeden ekran. Wrzuć skan, wybierz język, kliknij uruchom.
- Wrzuć lub wybierz zeskanowany PDF. Do 50 MB i 100 stron.
- Wybierz język dokumentu. Angielski, hiszpański, niemiecki, francuski, portugalski, włoski i rosyjski są dziś obsługiwane. Model językowy (~5-10 MB) pobiera się raz na język, a przeglądarka go buforuje.
- Wybierz DPI renderowania. 200 DPI jest zalecane. 300 DPI daje najlepszą dokładność, ale trwa dłużej; 150 DPI jest szybsze, ale działa dobrze tylko na czystych skanach.
- Kliknij Uruchom OCR. Model się ładuje (5-15 sekund za pierwszym razem), potem każda strona jest renderowana i rozpoznawana po kolei. Postęp pokazuje się per stronie; możesz anulować w trakcie.
- Skopiuj rozpoznany tekst albo pobierz jako .txt nazwany po Twoim źródle (np.
contract-scan.pdf→contract-scan.txt). Wyjście to UTF-8.
Jedyny ruch sieciowy podczas uruchomienia to pierwsze pobranie modelu językowego z CDN Tesseracta. To żądanie to publiczny fetch pliku statycznego — ten sam, który dostaje każdy — i nie zawiera danych PDF idących w żadnym kierunku. Po wylądowaniu modelu w buforze przeglądarki zakładka sieci jest cicha przez resztę uruchomienia i cicha na zawsze dla kolejnych uruchomień w tym samym języku.
DPI i język — dwa pokrętła, które mają znaczenie
Tesseract to pattern-matcher wytrenowany na kształtach znaków. Dwie rzeczy rujnują pattern matching: za mało pikseli i niewłaściwy alfabet. DPI kontroluje pierwsze. Język kontroluje drugie.
| Renderowanie DPI | Strony na minutę | Dokładność na czystych skanach | Najlepsze dla |
|---|---|---|---|
| 150 DPI | ~30-50 | 92-96% | Już ostre skany, jednokolumnowy tekst, szybkie drafty |
| 200 DPI (domyślne) | ~20-30 | 96-99% | Większość dokumentów — punkt słodki dla szybkości i dokładności |
| 300 DPI | ~10-15 | 97-99%+ | Małe czcionki, drobny druk, przypisy, wszystko, czemu zaufasz bez korekty |
Schodzenie poniżej 150 DPI to zła wymiana. Tesseract zaczyna mylić podobne glify, gdy wysokość znaku spada poniżej mniej więcej 30 pikseli — „rn" czyta się jako „m", „cl" czyta się jako „d", małe L wygląda jak cyfra 1. Wchodzenie powyżej 300 DPI rzadko pomaga i mniej więcej podwaja czas wykonania — wtedy renderujesz stronę w większej ilości szczegółów, niż rozpoznawca może użyć.
Język ma większe znaczenie, niż ludzie oczekują. Tesseract załadowany z modelem angielskim spróbuje rozpoznać hiszpańską stronę, ale nie wie, że ñ, í czy á są literami — będzie zgadywał i nie trafi. Wybierz dominujący język dokumentu. Dla hiszpańskiej umowy z kilkoma angielskimi nazwami marek wybierz hiszpański; Tesseract trafi nazwy marek z grubsza i tekst właściwie dokładnie. Dla dokumentów wieloskryptowych (angielski obok chińskiego, arabskiego, hindi) Tesseract nie jest świetny w przełączaniu skryptów w locie — daj nam znać, jeśli potrzebujesz jednego z tych, a dodamy model do wybieraka.
Konkretny przykład z prawdziwymi liczbami
Weź realny przypadek: 12-stronicowy zeskanowany PDF transkryptu uczelnianego z lat 80. — czcionka maszynowa, skan 200 DPI, bez oczywistych uszkodzeń, jedna kolumna, angielski. Plik to 4,2 MB.
W 200 DPI / angielski uruchomienie zajmuje 28 sekund end-to-end (po tym, jak model jest już zbuforowany z poprzedniej sesji). Wyjście to plik .txt o rozmiarze 6,8 KB. Sprawdzanie wyrywkowe wyjścia względem oryginału: 1247 słów na stronie, łącznie 14 błędów OCR. Większość to zamieszanie „I" vs „l" vs „1" w kolumnie ID studenta. Nazwy kursów wyszły czysto. Oceny wyszły czysto. Nagłówek transkryptu — obszar herbu uczelni, gdzie skan złapał część pieczęci — był jedyną strefą z prawdziwym śmieciem. Ręczne czyszczenie zajęło dwie minuty w edytorze tekstu.
Ten sam dokument w 300 DPI: 51 sekund, 4 błędy OCR. Ten sam dokument w 150 DPI: 18 sekund, 38 błędów — widocznie gorzej, cyfry zostały mocno uderzone. 200 DPI był właściwym wyborem.
Teraz przerzuć wejście: zdjęcie telefonem odręcznej notatki ze spotkania, wyeksportowane jako PDF. Tesseract zwrócił głównie pusty plik z kilkoma rozproszonymi znakami. To uczciwa odpowiedź — Tesseract był trenowany na tekście maszynowo-drukowanym, a pismo odręczne to inny problem. Nie udajemy.
Jak to się ma do Adobe Acrobat, SmallPDF, iLovePDF
Uczciwe porównanie: OCR Adobe Acrobat jest lepsze niż nasze na trudnych wejściach i mówimy to otwarcie.
Acrobat uruchamia Tesseract pod maską (albo robił historycznie — Adobe nałożył własne ML lata temu) plus stos pre-przetwarzania: prostowanie, korekcję kontrastu, wykrywanie linii i post-OCR model językowy, który łapie typowe błędy rozpoznawania. Na pogniecionym paragonie sfotografowanym pod jarzeniówką Acrobat wyprodukuje użyteczny tekst, gdzie Tesseract zwróci breję. To warte ~20 USD/miesiąc, jeśli Twoja praca obejmuje OCR-owanie bałaganiarskich wejść ze świata rzeczywistego cały dzień. Na czystym 200-300 DPI maszynowo-drukowanym skanie w typowym języku różnica się zamyka — Tesseract jest często 97%+, Acrobat jest często 99%+, a dla większości użytkowników różnica nie uzasadnia wysłania dokumentu.
SmallPDF i iLovePDF opakowują OCR po stronie serwera (ta sama rodzina silników) za dzienną darmową kwotą plików i powtarzającym się nakłanianiem do subskrypcji. Działają. Trzymają też Twój PDF na swoich serwerach przez co najmniej kilka godzin, zwykle dłużej, zależnie od polityki retencji, której nie czytałeś. Dla wrażliwych skanów to zły domyślny wybór. Dla ulotki marketingowej nie ma znaczenia.
OnlineOCR.net i OCR PDF24 to tani koniec tego rynku — działa, naszpikowany reklamami, z limitem rozmiaru pliku, wyjście ze znakiem wodnym, chyba że się zapiszesz. To, co mamy na myśli, gdy wskazujemy dolną półkę Big Software. Jesteśmy odwrotną wymianą: wolniejsi niż nic (Tesseract to jednowątkowy WASM, Twój CPU robi pracę), bez uploadu, bez konta, bez kwoty.
Od czego zależy czyste OCR
OCR to pattern-matching na pikselach. Wzorzec musi być widoczny. Pięć rzeczy napędza dokładność bardziej niż cokolwiek innego:
- Rozdzielczość skanu. 200-300 DPI to podłoga dla niezawodnego OCR. 100 DPI zdjęcia z telefonu często wyglądają dobrze dla człowieka i mylą Tesseracta — kreski liter mają za mało pikseli szerokości, żeby rozpoznawca zablokował się na kształcie.
- Kontrast. Czarny tusz na białym papierze jest najlepszy. Wyblakłe kserokopie kserokopii, gdzie litery zlewają się z tłem strony, szybko obniżają dokładność. Dostosuj kontrast w oprogramowaniu skanera przed zapisaniem PDF, jeśli możesz.
- Skos. Strona zeskanowana pod kątem 5° czyta się gorzej niż prosta. Acrobat automatycznie prostuje; Tesseract nie. Zeskanuj ponownie z prostszą stroną albo obróć w czytniku najpierw.
- Czcionka. Nowoczesne czcionki ciała w 10-12pt OCR-ują się czysto. Czcionki ozdobne, blackletter, bardzo cienkie lub bardzo grube kroje, all-caps display type i pismo odręczne są wszystkie trudniejsze.
- Tło. Solidnie białe lub jasnokremowe strony są łatwe. Strony z mocnym znakiem wodnym, papier zabezpieczeń (liniowane tło na czeku, wzorowane tło na dyplomie) i postarzony papier z brązowieniem to wszystko szum dla rozpoznawcy.
Najbardziej wpływowa poprawka na złym uruchomieniu OCR to ponowny skan w 300 DPI z podbitym kontrastem. To też darmowe.
Renderowanie do tekstu to nie to samo co wyciąganie osadzonego tekstu
To jest jedna rzecz, którą ludzie konsekwentnie źle rozumieją. Są dwie prace PDF-na-tekst, które brzmią identycznie i nie są.
OCR strony (co robi to narzędzie): każda strona jest renderowana jako bitmap wysokiej rozdzielczości, a potem Tesseract rozpoznaje znaki z tych pikseli. Działa na zeskanowanych PDF-ach, PDF-ach ze zdjęciami stron, czymkolwiek, gdzie tekst jest częścią obrazu. Wolne, lekko niedokładne, jedyna opcja dla PDF-ów tylko-obrazowych.
Wyciąganie osadzonego tekstu (inne narzędzie): czyta obiekty tekstowe przechowywane wewnątrz PDF bezpośrednio. Działa na każdym PDF zrodzonym z procesora tekstu, „Zapisz jako PDF" przeglądarki, LaTeX-a, InDesign — czegokolwiek, co wyprodukowało PDF z prawdziwego tekstu. Natychmiastowe, idealnie dokładne, ale zwraca nic na skanach, bo nie ma osadzonego tekstu do wyciągnięcia.
Jeśli Twój PDF już ma zaznaczalny tekst — spróbuj podświetlić zdanie w dowolnym czytniku PDF — użyj Wyciągnij tekst z PDF zamiast tego. Jest szybsze i dokładne. OCR jest dla przypadku, gdy nie ma tekstu do wyciągnięcia, tylko piksele do rozpoznania.
Czym Tesseract jest, a czym nie
Tesseract zaczął jako projekt badawczy w HP Labs w latach 80., został udostępniony na otwartym kodzie w 2005 i stał się preferowanym silnikiem OCR Google przez następną dekadę. Wersja społecznościowa, której używamy, to ten sam silnik, który jest w niezliczonych narzędziach desktopowych, dystrybucjach Linuksa i pipelinach przetwarzania dokumentów. Nie jest nowy i nie jest magią — jest dojrzały, przewidywalny i darmowy.
W czym jest dobry: tekst maszynowo-drukowany, nowoczesne alfabety łaciński i cyrylicki, czcionki ciała w normalnych rozmiarach, książki, umowy, artykuły, zeskanowane paragony, dokumenty maszynopisowe. W czym jest średni: małe czcionki poniżej 8pt, notacja matematyczna, układy wielokolumnowe (próbuje, ale czasem przeplata kolumny), tabele (renderowane jako tekst w kolejności czytania, nie jako tabela). W czym jest zły: pismo odręczne (zasadniczo nieodszyfrowalne dla niego; bardzo schludne pismo drukowane czasem działa, ale spodziewaj się ciężkich błędów), CAPTCHA (celowo), mocno stylizowane czcionki, wszystko, gdzie znaki są celowo trudne do odczytania.
Nowsze komercyjne OCR-y — Google Cloud Vision, Microsoft Azure Document Intelligence, AWS Textract — biją Tesseracta na trudnych wejściach, bo używają nowoczesnych modeli transformer trenowanych na ogromnych zbiorach danych. Też pobierają opłatę za stronę i wymagają wysłania dokumentu do chmury. Dla większości dokumentów, w większości dni, Tesseract w przeglądarce to właściwa wymiana.
Powiązane narzędzia PDF
Narzędzie OCR PDF to jeden kafelek w większym zestawie PDF. Kilku sąsiadów, którzy często pojawiają się:
- Wyciągnij tekst z PDF — użyj tego najpierw, jeśli Twój PDF już ma zaznaczalny tekst. Natychmiastowe i dokładne, bez potrzeby OCR.
- Wyciągnij obrazy z PDF — wyciągnij osadzone zdjęcia z PDF jako pojedyncze pliki. Inna praca niż OCR.
- PDF na PNG — wyrenderuj każdą stronę jako bezstratny obraz. Przydatne, gdy chcesz zdjęcia stron obok rozpoznanego tekstu.
- Podziel PDF — rozbij długi PDF na kawałki przed OCR-owaniem. Narzędzie OCR ma limit 100 stron na uruchomienie; dla dłuższych dokumentów najpierw podziel.
- Kompresuj PDF — jeśli Twój skan jest ogromny, wcześniejsza kompresja nie zaszkodzi dokładności OCR w 200 DPI i może sprowadzić liczbę stron pod limit per-uruchomienie.
Microapp wysyła każde narzędzie PDF po stronie przeglądarki, z tymi samymi wymianami wypisanymi na każdej stronie. 10% każdego dolara, który Microapp zarabia, idzie na cele charytatywne, z góry, audytowane kwartalnie — więc narzędzie, którego używasz, musi faktycznie działać bez reklam w drodze.
Często zadawane pytania
Jak to się ma do OCR Adobe Acrobat?
Uczciwie: Acrobat jest lepszy na trudnych wejściach. Acrobat używa Tesseracta plus warstwy własnego ML Adobe do prostowania, korekcji kontrastu i post-przetwarzania modelem językowym — radzi sobie z bałaganiarskimi skanami (złe oświetlenie, obrócone strony, niski kontrast, niezwykłe czcionki) bardziej niezawodnie. To narzędzie to czysty Tesseract. Na czystych skanach maszynowo-drukowanych w 200-300 DPI w obsługiwanym języku różnica jest mała i dostajesz plus nie-wysyłania dokumentu. Na trudnych skanach Acrobat wygrywa. Wolimy Ci to powiedzieć niż przesprzedawać.
Jakie języki obsługuje?
Dziś: angielski, hiszpański, niemiecki, francuski, portugalski, włoski i rosyjski. Każdy język ma swój ~5-10 MB model Tesseracta, który pobiera się przy pierwszym użyciu i jest buforowany potem. Sam Tesseract obsługuje 100+ języków — jeśli potrzebujesz takiego, którego nie ma w wybieraku (chiński, japoński, arabski, hindi itd.), daj nam znać i dodamy. Dokumenty wielojęzyczne działają najlepiej, jeśli wybierzesz dominujący język; Tesseract nie jest świetny w przełączaniu skryptów w locie.
Czy działa na piśmie odręcznym?
Niemal nigdy. Tesseract był trenowany na tekście maszynowo-drukowanym — czcionkach, książkach, zeskanowanych dokumentach maszynopisowych, oznaczeniach. Kursywa odręczna jest dla niego zasadniczo nieodszyfrowalna; bardzo schludny tekst pisany ręką drukowaną czasem działa, ale powinieneś oczekiwać ciężkich błędów. Dla OCR pisma odręcznego potrzebujesz innego modelu (Google Cloud Vision i Microsoft Azure Document Intelligence oba dostarczają modele trenowane na piśmie odręcznym). Nie udajemy, że Tesseract to potrafi.
Jak szybkie to jest?
Dwie fazy. (1) Ładowanie modelu: 5-15 sekund za pierwszym razem, gdy wybierasz język (pobiera się ~5-10 MB .traineddata). Buforowane potem, więc kolejne uruchomienia w tej samej przeglądarce są natychmiastowe. (2) Rozpoznawanie: ~1-3 sekundy na stronę w 200 DPI na nowoczesnym laptopie, ~3-8 sekund w 300 DPI. 20-stronicowy zeskanowany raport w 200 DPI zwykle kończy się w 30-60 sekund end-to-end po pierwszym uruchomieniu. Jest przycisk Anuluj, jeśli zmienisz zdanie w trakcie.
Czy mój PDF jest naprawdę prywatny?
Sam PDF nigdy nie opuszcza przeglądarki. pdfjs-dist renderuje strony lokalnie; Tesseract.js uruchamia OCR lokalnie przez WebAssembly. Jedyne żądanie sieciowe podczas uruchomienia to pobranie modelu językowego z CDN Tesseracta (jsdelivr) za pierwszym razem — i to jest po prostu publiczne pobranie pliku statycznego, to samo, które dostaje każdy, bez żadnych danych PDF w nim. Sprawdź zakładkę Sieć w przeglądarce podczas rozpoznawania: po załadowaniu modelu zero żądań wychodzących, dopóki nie przeładujesz strony.
Dlaczego rozpoznany tekst ma błędy?
OCR jest z natury niedoskonałe — to pattern matching na pikselach. Dokładność zależy mocno od jakości wejścia: 300 DPI czysty skan standardowej książkowej czcionki w dobrym kontraście = często 98%+. 150 DPI zdjęcie pogniecionego paragonu pod jarzeniówką = znacznie gorzej. Typowe problemy: zamieszanie 'l' vs 'I' vs '1', 'O' vs '0', połączone litery w starych czcionkach, kolumny się przeplatają, przypisy mieszają się z treścią. Zawsze sprawdzaj wyjście OCR przed zaufaniem mu w użyciu prawniczym, medycznym albo finansowym.
Czy mogę OCR-ować PDF, który już ma tekst?
Możesz, ale to złe narzędzie. PDF-y z osadzonym tekstem (wszystko wyeksportowane z Worda, Google Docs, LaTeXa albo 'Zapisz jako PDF' z przeglądarki) już mają zaznaczalny tekst — uruchamianie OCR na nich rozpoznaje wyrenderowane glify od zera, co jest wolniejsze i mniej dokładne niż po prostu czytanie tekstu, który już tam jest. Dla tych użyj narzędzia Wyciągnij tekst z PDF — jest natychmiastowe i dokładne.
Czy dodacie wyjście wyszukiwalny-PDF?
Tak, to plan v2. Obecne wyjście to zwykły plik .txt z rozpoznanymi słowami. „Wyszukiwalny PDF" zachowałby oryginalne obrazy stron, ale dodał niewidoczną warstwę tekstu na wierzchu, więc mógłbyś podświetlić, zaznaczyć i Ctrl-F w PDF jak w normalnym dokumencie tekstowym. To bardziej złożona budowa (pozycjonowanie każdego rozpoznanego słowa we właściwym x/y na stronie) i chcieliśmy najpierw wysłać uczciwą wersję .txt. Wybierak wyjścia pokazuje „Wyszukiwalny PDF — wkrótce", więc wiesz, że jest planowany.
Jaki jest limit rozmiaru pliku?
50 MB i 100 stron na uruchomienie. OCR jest znacznie cięższe niż ekstrakcja tekstu — każda strona zostaje wyrenderowana do canvasu wysokiej rozdzielczości i przetworzona przez model WASM — więc limity są ciaśniejsze niż w naszych innych narzędziach PDF. Dla większych dokumentów podziel PDF naszym Podziel PDF i OCR-uj kawałki osobno. Na urządzeniu z mało pamięcią (telefon, Chromebook z 4 GB RAM) nawet 100 stron w 300 DPI może się zaciąć; zejdź do 200 DPI albo podziel na mniejsze.