Van a neten egy nem túl hosszú BASIC forráskód PNG formátumban. Mivel szeretném lefuttatni, a legegyszerűbbnek azt tűnt, hogy OCR-rel konvertálom szöveggé. Reméltem, hogy egy AI, a már amúgy is elég jó OCR-ek képességeit kiegészítve könnyedén megbirkózik a feladattal.
A CharGTP adta eddig a legjobb eredményt, de ő is kihagyott sorokat. A többi AI még ennyire sem volt képes. Az ocrmypdf bele sem kezdett, az online OCR-ek pedig szintén alulteljesítettek.
Mivel nem túl hosszú, ki is egészíthetném a ChatGPT eredményét, de már kíváncsi vagyok, hogy meg lehet-e oldani egy ilyen minőségű forrás megbízható felismerését AI támogatással vagy valamilyen jobb minőségű OCR-rel?
- 1282 megtekintés
Hozzászólások
:)
a non-english OCR szerintem eléggé gyerekcipőben jár.
Lehet érdemesebb begépelni :D
- A hozzászóláshoz be kell jelentkezni
A fel nem ismerhető karakterek fel nem ismerése nem zavarna annyira, de az angol karakterkészletes résszel sem tudnak megbirkózni. Amúgy a ChatGpt elég szépen ismergette fel a japán karaktereket is, de nagyon durván átszerkesztette még ő is a kódot.
- A hozzászóláshoz be kell jelentkezni
Szerintem a Grok jobban ismer fel programkódot mint a ChatGPT. Az ugyanis hajlandó megérteni, hogy ne értelmezd a kódot, ne szerkezd át, csak ocr-ezt be.
Ha nagyobb kódról van szó, 70 sornál többet nem érdemes egyszerre odaadni AI-nak. Fel kell darabolni a képet ha egyben van és nagyobb. Illetve ha kijavítottad a hibákat, érdemes visszamásolni a szöveget, mert utána pontosabban fogja felismerni a következő képekről a kódot.
Sajnos egy idő után elkezd hallucinálni és bejönnek korábbi kódrészletek. Ilyenkor új chatet kell nyitni és ott folytatni. Itt egyébként rövid kódról van szó, borzalmas minőségű karakterekkel írva.
Mivel itt a teljes kód 105 sor akár kézzel is be lehetne gépelni. Ha nagy mennyiségű kódról van szó, érdemes lehet Tesseract OCR-t használni. Ez az egyik legkiválóbb OCR szoftver. A Google hatalmas mennyiségű szöveget OCR-ezett be vele, a legkülönfélébb könyveket, még 100 évnél idősebbeket is tömegesen és gyorsan. A teljes kód nyílt forráskódú, amit a Google nem adott oda a nagy pontosságú betanított modelleket traineddata fájlokat. Ezt saját magának kell megcsinálnia mindenkinek, aki pontos OCR-ezért akar ami nem lehetetlen egy adott betűtípusra és programkódokra szűkítve a halmazt. Ez 500–1000 annotált kép betanítását jelenti.
A Google belső OCR rendszerei mint a Google Lens mögött fejlettebb betanítási adatokat és optimalizált modelleket használnak, amelyek nem részei a nyílt forráskódú Tesseractnak. Egyébként persze használhatsz Google Lens-t is.
- A hozzászóláshoz be kell jelentkezni
Muszáj ehhez AI? A tesseract elég sok nyelvet ismer (csak fel is kell tenni a megfelelő nyelvi csomagot), és elég korrekt eredményt generált azon néhány esetben, amikor használnom kellett.
Visszavonom, ezt így elsőre egyáltalán nem sikerült neki megennie. (Lehet, némi paraméter módosításra van szükség. vagy épp a képet kellene torzítani - pl. hogy szélesebbek legyenek a bötvök.)
- A hozzászóláshoz be kell jelentkezni
Nekem ezt alkotta a Tesseract:
1 ‘# Sokoban The wherehouse keeper) #
2 ‘# Original author #
3 RO Hiroyuki, Imabayashi _ #
4 Rag 1981-9999 #
R: ana ae aa T
E '# NGG Ver, name-tech_ 2019,06,03 #
1a WIDTH 46,25 :CONSÖLE A,25,0,1:DEFINT_ A-Z
26 DIM SM$(6), SCC) SO$t6) MCECLS) MACIA, di9), MK AT H P PY PLPR PIPU, PR, PMC2), LR, UD, S
30 FOR I=0 TO 6 :READ SM$(1):NEWT
40 FOR I=6 TO é :READ SCi) :NEXT
S0 FOR I=0 TÒ 6 :READ S0$(I):NEKT
si / xSokoban Char
ae DATA" Doft t EH
53 DATA 0,5,3,5,6,5,2
54 * NBB Char
55 DATA " "$A, 0i
30 GÒSUB 900 : * W7 tti ^
- A hozzászóláshoz be kell jelentkezni
Biztos, hogy ez nem FORTRAN? Három sor is van ami úgy kezdődik, hogy: FOR.
Még nincs aláírásom.
- A hozzászóláshoz be kell jelentkezni
Haha, a FORTRAN-ban pont nincs FOR (csak DO).
- A hozzászóláshoz be kell jelentkezni
Elég lett volna ha csak annyit írsz: Biztosan nem FORTRAN mert a FOR-ral kezdődő sorok után nincsenek TRAN-nal kezdődő sorok.
Nem kell rögtön kinevetni az embert.
Még nincs aláírásom.
- A hozzászóláshoz be kell jelentkezni
Bocs, azt hittem csak trollkodsz. Úgy látszik van aki nem ismeri fel a BASIC-et (öreg vagyok, ja).
- A hozzászóláshoz be kell jelentkezni
Tényleg nem trollkodtam. Csak vicceltem. Ha nem teszek mosolygót a mondat végére, akkor már nem ismerik fel az emberek, hogy tréfálkozik valaki?
Még nincs aláírásom.
- A hozzászóláshoz be kell jelentkezni
# Sokoban (The wherehouse keeper) #
# Original author
# @ $
# $
# N80 Ver, name-tech
1981-9999
Hiroyuki.Imabayashi
2019.06.03
10 WIDTH 40,25:CONSOLE 0,25,0,1:DEFINT A-Z
20 DIM SM$(6),SC(6),SO$(6),MC$(19),MA(31,19),MX,MY,H,PX,PY,PL,PR,PD,PU,P,PM(2),LR,UD,S
30 FOR I=0 TO 6 :READ SM$(I):NEXT
40 FOR I=0 TO 6 :READ SC(I):NEXT
50 FOR I=0 TO 6 :READ SO$(I):NEXT
51 ' Sokoban Char
52 DATA " ",.@,$,*,#,
53 DATA 0,5,3,5,6,5,2
54 ' N80 Char
55 DATA " ",.,#,0,0,
90 GOSUB 900 : ' マップ セイセイヘ
100 ' ハイレツ アフレ タイサク
110 IF PX<2 THEN PL=4 ELSE PL=MA(PX-2,PY)
120 IF PX>MX-2 THEN PR=4 ELSE PR=MA(PX+2,PY)
130 IF PY<2 THEN PD=4 ELSE PD=MA(PX,PY-2)
140 IF PY>MY-2 THEN PU=4 ELSE PU=MA(PX,PY+2)
200 ' ニュウリョクマチ
200 I0=INP(0):I1=INP(1)
210 IF I0=239 AND MA(PX-1,PY)+PL<8 THEN LR=-1:GOTO 300:' L
220 IF I0=191 AND MA(PX+1,PY)+PR<8 THEN LR=+1:GOTO 300:' R
230 IF I1=254 AND MA(PX,PY-1)+PD<8 THEN UD=-1:GOTO 400:' U
240 IF I0=251 AND MA(PX,PY+1)+PU<8 THEN UD=+1:GOTO 400:' D
250 IF I0=254 THEN 620
260 IF I1=127 THEN 640
270 GOTO 200
300 ' サユウ イドウ
300 PM(0)=MA(PX,PY):PM(1)=MA(PX+LR,PY):PM(2)=MA(PX+LR+LR,PY)
310 IF PM(1)=0 OR PM(1)=1 THEN MA(PX,PY)=PM(0)-2:MA(PX+LR,PY)=PM(1)+2
320 IF PM(1)=4 OR PM(1)=5 THEN MA(PX,PY)=PM(0)-2:MA(PX+LR,PY)=PM(1)-2:MA(PX+LR+LR,PY)=PM(2)+4
330 PM(0)=MA(PX,PY):PM(1)=MA(PX+LR,PY):PM(2)=MA(PX+LR+LR,PY)
340 FOR I=0 TO 2: LOCATE PX+(LR*I),PY:PP=PM(I): COLOR SC(PP):? SO$(PP): NEXT
350 PX=PX+LR:LR=0: GOTO 500
400 ' ジョウゲ イドウ
400 PM(0)=MA(PX,PY):PM(1)=MA(PX,PY+UD):PM(2)=MA(PX,PY+UD+UD)
410 IF PM(1)=0 OR PM(1)=1 THEN MA(PX,PY)=PM(0)-2:MA(PX,PY+UD)=PM(1)+2
420 IF PM(1)=4 OR PM(1)=5 THEN MA(PX,PY)=PM(0)-2:MA(PX,PY+UD)=PM(1)-2:MA(PX,PY+UD+UD)=PM(2)+4
430 PM(0)=MA(PX,PY):PM(1)=MA(PX,PY+UD):PM(2)=MA(PX,PY+UD+UD)
440 FOR I=0 TO 2: LOCATE PX,PY+(UD*I):PP=PM(I): COLOR SC(PP):? SO$(PP): NEXT
450 PY=PY+UD:UD=0:GOTO 500
500 ' シュウノウ ハンティ
500 S=S+1:P=0: BEEP1: BEEP0
510 FOR I=1 TO MY-1:
520 FOR J=1 TO MX-1
530 IF MA(J,I)=5 THEN P=P+1
540 NEXT
550 NEXT
555 COLOR 7: LOCATE 9,23: PRINT USING "ニモツ ##コノウチ##コ シュウノウ ホスウ###ホ.";H;P;S
560 IF H=P THEN 600
570 GOTO 100
600 ' シュウリョウ メッセージ
600 COLOR 6: LOCATE 2,13:? "ソウコ カタズキマシタ! (^o^)b ヤッタネ": BEEP
610 LOCATE 2,15:? "オメデトウ!! アナタ セイシャインニ サイヨウ サレマシタ。":PRINT: END
620 COLOR 3: LOCATE 2,20:? "サイチョウセン ガンバレ!!(^^)p (^_^) ガンバレ": BEEP
630 LINE (0,0)-(31,19),BF:GOSUB 909:LINE(0,20)-(40,20),0,B:S=0:GOTO 100
640 COLOR 2: LOCATE 2,13:? "クビ クビニナリマシタ!": PRINT: BEEP: BEEP: END
900 ' マップ セイセイ
900 ? CHR$(12)
901 READ MY,MX
905 FOR I=0 TO MY
906 READ MC$(I)
907 NEXT
909 H=0
910 FOR I=0 TO MY
920 FOR J=0 TO MX
921 Z$= MID$(MC$(I),J+1,1)
922 FOR A=0 TO 6
923 IF Z$=SM$(A) THEN S=A
924 NEXT
930 MA(J,I)=S
931 LOCATE J,I: COLOR SC(S):? SO$(S)
933 IF S=2 THEN PX=J:PY=I
934 IF S=1 OR S=5 THEN H=H+1
940 NEXT
950 NEXT
950 RETURN
1000 DATA 6,6
1001 DATA"#####"
1002 DATA" # # "
1003 DATA "# # "
1004 DATA "##..* #"
1005 DATA "#$$##"
1006 DATA "# "
1007 DATA "###### "
' 20 level 01
' Title : Double Phase
' Author (サク) ラビ
' Replay : rdrdLLdd1luRdrUd1U.
google lens ?
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Egész jó, bár érdekes, hogy ez is hogyan hagy ki és egészít ki részeket. De mindenképp jó eszköz.
- A hozzászóláshoz be kell jelentkezni
https://github.com/eighttails/ProgramListOCR
Egy próbát megérhet.
- A hozzászóláshoz be kell jelentkezni
Ez milyen BASIC amúgy?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Majdnem. Pontosabban Nec PC-8001. Ez még egy csökkentett verzió az 8800-hoz képest. De lényegében az.
- A hozzászóláshoz be kell jelentkezni
Köszi!
- A hozzászóláshoz be kell jelentkezni
Ez most kivételesen nem az AI hibája, mert OCR-ben jó, meg a tesseract is. A probléma a forrásoddal van, nagyon alacsony a felbontása OCR-hez, alig pár DPI, kb 10-20 lehet, egy karakter nagyon vékony, alig áll pár pixelből. A normális OCR-hez kéne azért egy 300 DPI minimum, ha nem 600.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Ez egy 2k felbontás körüli kép, amin van kb 100-150 sornyi, egy sorban 80-100 - max 160 - darab pixelfontos karakter. Ennek nem kéne egy nehéz feladatnak lennie, de el tudom képzelni, hogy nem ilyenre vannak tanítva a mai megoldások. Ami még megzavarhat dolgokat az a japán szövegek talán.
- A hozzászóláshoz be kell jelentkezni
Na, végre. Pont ezek a finomságok érdekelnének. Mert, hogy az AI pont ebbe erős, hogy jól képes felismerni. És a szöveg szemmel egyértelműen felismerhető, de az AI-k mégis megbuknak rajta. Nem, a jó eredmény sem tűnik túl jónak, amikor szemmel egyértelműen látható, hogy mi van egy sorban, meg hogy milyen karakterek. Nem, nem a japán karakterek. Bár a chatgpt azokat is elég jól olvassa. De az első 10 sort senki nem tudta valósághűen szöveggé alakítani. Azt gondolnám, egy AI-nak ezt nevetve kéne tudnia.
De abban igazad lehet, hogy csak akkor, ha ilyenre tanítják. És hát ezek szerint nem ilyenre tanítják. Persze nekem ez is elég fura, mert szerintem rengeteg ilyen befotózott dokumentum van még az őskorból. Még ennél durvábbak is, amikor hajlik a lap a szkenner alatt, meg effélék. Azt gondolnám, cél ezek felolvasása . ... És persze lehet, hogy tévedek.
- A hozzászóláshoz be kell jelentkezni
Informatikában régebben mozgó emberként persze hajlamosak lehetünk elvárni, hogy 30+ éves dolgokra is jó legyen az "AI", de ez szerintem irreális elvárás egy általános célokra és nagyközönségnek szánt eszköz esetén.
- A hozzászóláshoz be kell jelentkezni
Azért azt nem hiszem, hogy az alak- formafelismerés 30+ éves dolognak minősülne.
- A hozzászóláshoz be kell jelentkezni
OCR régebben van, de nem erre gondoltam, hanem hogy azt gondolod hogy olyan sok és régi programrészlettel traktálják az AI-t. :)
- A hozzászóláshoz be kell jelentkezni
Az LLM-ekbe epitett kepfeldolgozo azert hajlamos a furcsasagokra, amit nem tudok igazan megmagyarazni (a hallucinaciot persze ertem).
Feltoltottem a ChatGPT-nek egy celfotot valamelyik regebbi kajak-kenu versenyrol (talan a 2024-es ORV-rol, de nincs jelentosege), hogy irja le minel precizebben, mi van a kepen. Felismerte a kep jellegebol, hogy egy resoptikaval keszitett celfotorol van szo (ezzel sokszor emberek sem tudnak mit kezdeni, mert nem lattak meg ilyet), felismerte par hajo szamat (ez nem mindig latszik), a kajakok tipusat - talan kajak 4-es volt. A foto iranyat viszont "benezte", az utolsot hozta ki gyoztesnek, es a szerinte jo befutasi sorrendnek koze nem volt a valosaghoz. Adtam neki egy masik versenyrol kepet, amelyiken ellentetes iranybol jottek a hajok, a sorrend ott is randomgeneralt volt. Pedig meg azt is felajanlotta, hogy megtippeli nekem az idokulonbsegeket - ez nagyon beallitasfuggo pedig. Megadtam utana neki a helyes iranyt, hogy melyik kepen honnan jonnek a hajok, de a sorrendet meg mindig nem volt kepes eltalalni egyik esetben sem. Szoval nem tudom, hogy milyen informaciot kap korabbi retegekbol, de valami nagyon meglepo eredmenyre kepes jutni.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Ööö, mi az a résoptika?
A másik meg, hogy LLM, statisztikai modell... hát az ilyen. Sok számot lát, azt felismeri. A kajak is, kenu is olyan távolról nézve, hogy van jön, vagy megy, ahhoz kéne az I, hogy eldöntse, hogy mivan.
Mint pl. ennél a képnél.
- A hozzászóláshoz be kell jelentkezni
Leszámítva pár hülye országot, balra.
Illetve "Megadtam utana neki a helyes iranyt"
- A hozzászóláshoz be kell jelentkezni
Leszámítva pár hülye országot, balra.
Nincs semmilyen támpont a képen, ami alapján dönteni lehetne.
- A hozzászóláshoz be kell jelentkezni
Pedig de.
- A hozzászóláshoz be kell jelentkezni
Már hogyne lenne. A másik oldalon vannak az ajtók.
- A hozzászóláshoz be kell jelentkezni
És? A buszon nincs hátramenet?
- A hozzászóláshoz be kell jelentkezni
Egyébként ez is egy jó válasz (mármint hogy nem lehet eldönteni, mert lehet hogy épp hátramenetben van). Meg az is lehet hogy épp szakadékba zuhan. Vagy olyan busz, aminek csak a hátulján (elején, tetején) van ajtó. Vagy ötdimenziós busz, és így nem látszik (ennek persze semmi értelme, de jól hangzik).
Viszont egy átlagos épeszű ember (figyelem, direkt nincs ott vessző) számára nyilvánvaló (vagy nyilvánvaló lesz, ha elmondják hogy miért), hogy mivel az ajtó a túloldalon van, ezért balra (vagy épp pont jobbra, kultúrától, országtól függően) megy.
(Itt jön képbe, hogy bármilyen általánosítás csak hibás lehet - és igen, ez is az -, de ez már nagyon messzire vezet az OCR-től, de még a busztól is, csak beütött a kávé :D)
- A hozzászóláshoz be kell jelentkezni
átlagos épeszű ember
Újságíró készít riportot az elmegyógyintézetben. Azt kérdi a főorvostól:
- Hogyan állapítják meg egy páciensről, hogy már elhagyhatja a kórházat?
- Vannak olyan feladataink, amiket helyesen végrehajtva bizonyíthatják elmeállapotukat.
- Tudna egy ilyen példát mondani?
- Persze. Vegyük például ezt: van egy kád, teli vízzel. Van a fürdőszobában három tárgy, egy kiskanál, egy pohár és egy vödör. Melyikkel tüntetné el a vizet a kádból?
- Ó, hát ez egyszerű! Minden normális ember a vödröt választaná.
- Nem, minden normális ember kihúzná a dugót a kádból...
- A hozzászóláshoz be kell jelentkezni
De, valóban :-)
- A hozzászóláshoz be kell jelentkezni
Celfotozaskor az ido ugy jon ki, hogy a palya mellett vegig van egy kabel - pontosabban tobb, a kulonbozo tavokon (200, 500, 1000, 2000m) leagazassal. A rajtgep ezen kuld egy jelet, ami bemegy a celban levo kameraba. A kamera mindig egy pixeloszlopot rogzit, de azt nagyon gyakran (a sport sebessegehez szoktak igazitani, a mostanaban hasznalt kamerak mondjuk 1500 FPS-ig mennek fel), es feljegyzi maganak a rogzites idejet is. Kiertekeleskor kivalasztod a futamnak megfelelo startot (vagy ha nincs rainditas, magatol aktivalja a legutobbit), rateszed a vonalakat a megfelelo helyekre (hajo orrara, futo mellere, sporttol fuggoen), es a vonal rogzitesenek az idejenek es a startidonek a kulonbsege megadja a befutas idejet.
Mar a 90-es evek ota ez digitalis kamerakkal megy, elotte viszont kemiai, filmes celfotos gepek voltak. Itt a szokasos objektiv mogott volt egy
res, amogott mozgott adott sebesseggel a film, a res kitakarta a film nagy reszet, igy csak egy csikot tudott megvilagitani, igy erte el ugyanazt a pixeloszlopos hatast, mint a kesobbi digitalis. A film utana ment elohivoba, fixirbe, es nehany futamonkent megneztek a befutasi sorrendet. A gep jellemzoen valami idokodot is rakott a filmcsik szelere, abbol meg lehetett allapitani az eltelt idot is kb. szazadmasodperces pontossaggal. Volt valami nezegeto is, ami az idokodot segitett leolvasni, meg a filmet vizszintesen tartotta, hogy a fuggoleges valoban azonos idot jelentsen. A blendehez hasonloan - ha keves volt a feny - a res szelesseget is ki lehetett nyitni (ez persze a kep elessegenek elmosasaval jart). A resoptika kifejezes megmaradt, annak ellenere, hogy a digitalisban mar nincs fizikailag ilyen.
A kep csak a celvonalat rogziti (verseny elott be kell allitani), es gyakorlatilag az x tengelyen az ido van. Emiatt csak a mozgo dolgoknak van normalis kepe, a hatter egy elmosodott valami. Ha egy futo epp a celvonalra lep, a laba tovabb latszodik, igy az a laba vastag lesz, mig amelyik csak egy pillanatig van abban a vonalban, vekony. Hajok eseten a gyorsabb hajok rovidebbek, amelyik lelassit celba erkezes utan, az hosszu lesz. Kajak 4-es a legviccesebb: az elol ulo a kepen meg vadul lapatol, az utolso meg - akinek mondjuk 1 masodperccel kesobbi allapota van a kepen - mar jobbra-balra nezelodik, evezojet a vizbe meriti, stb. Az evezo is - ha epp olyan fazisban megy at a celon - legtobbszor U alakuva valik. Itt egy pelda.
A kepirany allithato. Ugye ha egy pixeloszlopod van, azt teheted az eddigi kep bal es jobb oldalara is. Celszeru ugy beallitani, hogy kb. ugy nezzen ki a kep, mint ha kineznel az ablakon, es ne tukrozve. Ha jobbrol jonnek a hajok, akkor aki balra van, legyen elol. Ha balrol jonnek, akkor meg forditva. Ez attol fugg, hogy a palyan hogy tudtak elhelyezni a celtornyot. Atletikanal persze fixen balrol futnak be, illetve sportagtol is fugghet az irany. Azert altalaban egy futorol meg lehet allapitani, hogy melyik iranyba all a feje, merre fut, es egy kajakrol sem nehez (feje hogy all, hol van a terde, a hajon a szama hatul kell legyen, ilyesmik).
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
A Raynesless comment a legjobb. Nem tudod még hogy meggyőződéses bullshitelő?
- A hozzászóláshoz be kell jelentkezni
Igen szar ez a betűtípus btw. Még embernek olvasni is, pláne OCR-nek.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
Én erre irnék egy programot. Úgy látom hogy fix méretű karakterek vannak, ezért az egész képet fel lehet osztani egy ráccsal, majd pedig az egyes rácson lévő karaktereket fel lehet ismertetni, mert pontosan ugyanúgy fognak kinézni.
Kb. egy dupla for ciklus, egy összehasonlító függvény, meg egy táblázat ahol a karakterek képe és a hozzá tartozó karakter megvan. A japán komment felteszem nem fontos, azt első körben akár ki is lehetne hagyni.
Egy tizenéves diáknak pont ki lehet adni egy tábla milka csokiért hogy gyakoroljon.
- A hozzászóláshoz be kell jelentkezni