Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczytanie napisu z obrazu - OCR
Forum PHP.pl > Forum > PHP
Michael2318
Próbuję odczytać napis z obrazka. Pobrałem w tym celu coś takiego jak OCR - http://sourceforge.net/projects/phpocr/?source=typ_redirect
W przykładzie (index.php) wszystko ładnie czyta, jak zauplowadowałem swój obrazek to też bez przeszkód odczytał dwie pierwsze cyfry, ale kolejne znaki już zostały pomylone. Chodzi o to, że np. mój obrazek nie zawiera w ogóle małych liter oraz niektórych dużych (takich jak 0), a skrypt myli mi literę C z 0. Nie wiem za bardzo jak dać mu do zrozumienia (i tym samym ułatwić pracę), że na obrazku nigdy nie będą występowały małe litery i niektóre duże litery/cyfry? Dodatkowo spotkałem się w pliku z czymś takim:

  1. //If you create a new font include file replace char_inc_6.php with your own
  2. $conf['font_file'] = 'char_inc_6.php';


plik ten zawiera sporo tablic, przykład:

  1. Array("char"=>Array(
  2. Array(0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0),
  3. Array(0,0,0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0),
  4. Array(0,0,0,0,0,0,0,1,2,3,4,5,5,5,5,5,5,4,3,2,1,1,0,0,0,0,0,0),
  5. Array(0,0,0,0,0,1,2,3,4,6,7,8,8,8,8,8,8,7,6,4,3,2,1,0,0,0,0,0),

itd.

Moja czcionka to Arial Black, wydaje mi się, że te tablice dotyczą bezpośrednio znaków danej czcionki. Pytanie jak wygenerować taki plik dla mojej czcionki?

Ktoś miał z tym styczność kiedyś, aby mnie jakoś nakierować?
Kshyhoo
Na tym Forum nie pomagamy łamać zabezpieczeń.
Michael2318
Nie chcę łamać żadnych zabezpieczeń, interesuje mnie odczytanie sloganów reklamowych wraz z procentem rabatowym, np.:

Kshyhoo
My tego nie wiemy smile.gif
Michael2318
Rozumiem, że nie dostanę tutaj żadnej pomocy?
nospor
@Kshyhoo nie przesadzaj...

Cytat
Rozumiem, że nie dostanę tutaj żadnej pomocy?
Czemu? Temat nie został zamknięty. Jak ktoś bedzie wiedział, to zapewne pomoże.
kartin
Rozważ użycie zewnętrznych programów (np. tesseract, gocr) wywoływanych z PHP lub serwisów oferujących OCR online.
Spawnm
http://edward_ch.republika.pl/pod_prakt.html wink.gif
Michael2318
Po całym dniu ślęczenia przed komputerem, udało mi się znaleźć coś co spełnia moje oczekiwania - http://www.freefileconvert.com/
Uploaduję wybrane zdjęcie, wybieram, że interesuje mnie w efekcie treść w pliku .txt, klikam "convert" i mam co chcę.

Jednak kolejny problem jaki się pojawia to próba napisania skryptu, który sam z automatu zauploaduje mi tam moją grafikę.
Z pobraniem nie ma żadnego problemu bo jak już wyślę poprzez formularz mój plik to link przyjmuje postać: http://www.freefileconvert.com/converting....utputFormat=txt
gdzie nazwa grafiki w linku jest oryginalna, bez obróbki bo po krótkim czasie plik znika z serwera. Tak więc jeśli udałoby mi się wgrać samą grafikę na serwer poprzez formularz to mój efekt zostałby osiągnięty.

Kod HTML, który odpowiada za wysłanie grafiki:

  1. <form id="file_conversion_form" name="file_conversion_form" method="post" enctype="multipart/form-data" action="/scripts/uploadFile.php">
  2. <table style="height: 107px;">
  3. <tr>
  4. <td>
  5. <td align="left" style="padding-left: 10px; vertical-align: top;">
  6. <font style="color: #2647a0; font-size:15px; font-weight:bold; display:block;margin-bottom:5px;">1) Input File</font>
  7. <font style="font-size: 13px;">
  8. <p style="margin-bottom:10px;">Choose a file to convert (Max: 300.0 MB):</p>
  9. <input name="MAX_FILE_SIZE" value="314572800" type="hidden"/>
  10. <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="53fdd7b0d6777"/>
  11. <input type="file" id="input_file" name="input_file" onchange="updateOutputFormats(this)" size=20><br>
  12. </font>
  13. <font size=1px>Type: odt, doc, pdf, mp3, mpg, docx, avi, pptx...</font><br>&nbsp;
  14. </td>
  15. <td>
  16. <img width="10" src="images/spacer.gif">
  17. </td>
  18. <td bgcolor="#505050">
  19. <img width="1" src="images/spacer.gif">
  20. </td>
  21. <td>
  22. <img width="10" src="images/spacer.gif">
  23. </td>
  24. <td align="left" style="padding-left: 10px; vertical-align: top;">
  25. <font style="color: #2647a0; font-size:15px; font-weight:bold; display:block;margin-bottom:5px;">2) Output Format</font>
  26. <font style="font-size: 13px;">
  27. <p style="margin-bottom:10px;">Select an ouput format to convert to:</p>
  28. <select id="file_output_format" name="file_output_format" style="width: 170px;">
  29. <option value="">[Select Input File First]</option>
  30. </select>
  31. </font>
  32. </td>
  33. <td>
  34. <img width="10" src="images/spacer.gif">
  35. </td>
  36. <td bgcolor="#505050">
  37. <img width="1" src="images/spacer.gif">
  38. </td>
  39. <td>
  40. <img width="10" src="images/spacer.gif">
  41. </td>
  42. <td align="left" style="padding-left: 10px; vertical-align: top;">
  43. <font style="color: #2647a0; font-size:15px; font-weight:bold; display:block; margin-bottom:5px;">3) Convert</font>
  44. <font style="font-size: 13px;">
  45. <p style="margin-bottom:10px;">By clicking you agree to our <a href="tos.php">Terms</a><p>
  46. <center><input type="button" value="Convert" id="upload_file_button"></center>
  47. </font>
  48. </td>
  49. </tr>
  50. </tbody>
  51. </table>
  52. </center>
  53. </form>


Na podstawie tego kodu napisałem sobie prosty skrypt CURL:

  1. <?php
  2.  
  3. $c = curl_init();
  4. curl_setopt($c, CURLOPT_URL, 'http://www.freefileconvert.com/');
  5. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  6. curl_setopt($c, CURLOPT_HEADER, true);
  7. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  8. curl_setopt($c, CURLOPT_COOKIEFILE, 'curl.txt');
  9. curl_setopt($c, CURLOPT_COOKIEJAR, 'curl.txt');
  10. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  11. $p = curl_exec($c);
  12. curl_close($c);
  13.  
  14. preg_match('"id=\"progress_key\" value=\"(.*?)\""si', $p, $matches);
  15.  
  16. $post_params = array();
  17. $post_params['input_file'] = '@'.'male2.png';
  18. $post_params['file_output_format'] = 'txt';
  19. $post_params['MAX_FILE_SIZE'] = '314572800';
  20. $post_params['APC_UPLOAD_PROGRESS'] = $matches[1];
  21.  
  22. $c = curl_init();
  23. curl_setopt($c, CURLOPT_URL, 'http://www.freefileconvert.com/scripts/uploadFile.php');
  24. curl_setopt($c, CURLOPT_HTTPHEADER, array(
  25. 'Content-Type: multipart/form-data')
  26. );
  27. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  28. curl_setopt($c, CURLOPT_HEADER, true);
  29. curl_setopt($c, CURLOPT_POST, true);
  30. curl_setopt($c, CURLOPT_POSTFIELDS, $post_params);
  31. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  32. curl_setopt($c, CURLOPT_COOKIEFILE, 'curl.txt');
  33. curl_setopt($c, CURLOPT_COOKIEJAR, 'curl.txt');
  34. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  35. $p = curl_exec($c);
  36. curl_close($c);
  37.  
  38. echo $p;
  39.  
  40. ?>


Ale... to nie działa.
Widać w kodzie strony, że po kliknięciu w button, odpalany jest ten skrypt:

Kod
//Event fired when upload button is clicked
var onUploadButtonClick = function(e){
    acceptCookies();
    if($('input_file').value == '') {
        alert('Please press the browse button and pick a file to convert.');
        return false;
    } else if($('file_output_format').value.length >= 10) {
        alert('Please select an output format in which your want to convert your file.');
        return false;
    }
    $('upload_file_button').disabled=true;
    var uploadHandler = {
        upload: function(o) {
            var r = eval('(' + o.responseText + ')');
            if(r.hasError){
                var errorString = '';
                for(var i=0; i < r.errors.length; i++){
                    errorString += r.errors[i];
                }
                postwith("error.php", {message:errorString});
            }else{
            clearInterval(ProgressInterval);
            myJsProgressBarHandler.setPercentage('progressbar',100);
            var conversionURL = '/converting.php?fileToConvert='+r.uploadedFilename+'&outputFormat='+r.outputFormat;
            window.location.href = conversionURL;
            }
        }
    };
    YAHOO.util.Connect.setForm('file_conversion_form', true);
    YAHOO.util.Connect.asyncRequest('POST', '/scripts/uploadFile.php', uploadHandler);
    $D.setStyle('upload_progress_bar_container', 'display', 'block');
    ProgressInterval = setInterval("uploadProgress()", 1000);
}


który po prostu zezwala na odpalenie tego formularza z linku /scripts/uploadFile.php i wgranie pliku.
Niestety mój CURL nie wgrywa grafiki i nie mam pojęcia czemu tak się dzieje. Skrypt uploadFile.php na tej stronie zawsze daje pustą białą stronę, nieważne czy upload się powiedzie czy też nie, dlatego zadanie jest utrudnione trochę bo nie wiem co może być nie tak. Nagłówki wymagane dodałem, pola input zapisałem wszystkie. Nic innego mi do głowy nie przychodzi.

Jakieś sugestie? :/

Poradziłem sobie! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.