Nathan,

On Jul 13, 2011, at 1:58 PM, Nathan K wrote:

> Note: I'm still unable to get the python bindings to work cleanly on
> OSX. If anyone has achieved this I'd appreciate hearing from you as to
> the steps involved. Cheers.

I actually seemed to get most of them to work, I added code reviews to the 
repository for some of these.   I'm using the versions of openfst and ocropus 
from mac ports ( they may be out of date as to what is in the source repository 
but I added them to MacPorts to save someone the trouble in the future ).   No 
criticism here but everything downstream has an "include the world" effect and 
was a little too much for me to add as a Portfile.  It's easier just to check 
them out and build from source.  I include the basic patches that I applied to 
the hg checkouts, they might work for you or at least point you in the right 
direction 

Jason

(ocropuspython)jason@rainmaker:~/play/ocropuspython/src/ocropy$ hg diff

diff -r 6703502a95a9 ocrolib/fgen.py
--- a/ocrolib/fgen.py   Tue Apr 26 16:17:44 2011 +0200
+++ b/ocrolib/fgen.py   Wed Jul 13 20:36:34 2011 -0700
@@ -116,8 +116,7 @@
     pcr.show_layout(layout)
 
     data = surface.get_data()
-    data = bytearray(data)
-    a = array(data,'B')
+    a = frombuffer(data,'B')
     a.shape = (h,w,4)
     a = a[:th,:tw,:3]
     a = a[:,:,::-1]
diff -r 6703502a95a9 ocrolib/utils.py
--- a/ocrolib/utils.py  Tue Apr 26 16:17:44 2011 +0200
+++ b/ocrolib/utils.py  Wed Jul 13 20:36:34 2011 -0700
@@ -40,6 +40,11 @@
 
 def number_of_processors():
     try:
+        import multiprocessing
+        return multiprocessing.cpu_count()
+    except:
+        pass
+    try:
         return int(os.popen("cat /proc/cpuinfo  | grep 'processor.*:' | wc 
-l").read())
     except:
         return 1

(ocropuspython)jason@rainmaker:~/play/ocropuspython/src/ocroswig$ hg diff
diff -r 404e31a7d3af iulib.i
--- a/iulib.i   Fri Feb 25 01:11:50 2011 +0100
+++ b/iulib.i   Wed Jul 13 20:40:42 2011 -0700
@@ -12,7 +12,6 @@
 %include "cstring.i"
 #endif
 %{
-#include <malloc.h>
 #include <string.h>
 #include <colib/narray.h>
 #include <colib/narray-util.h>
diff -r 404e31a7d3af ocropus.i
--- a/ocropus.i Fri Feb 25 01:11:50 2011 +0100
+++ b/ocropus.i Wed Jul 13 20:40:42 2011 -0700
@@ -9,7 +9,6 @@
 %include "typemaps.i"
 %include "cstring.i"
 %{
-#include <malloc.h>
 #include <string.h>
 #include <colib/checks.h>
 #include <colib/narray.h>
diff -r 404e31a7d3af setup.py
--- a/setup.py  Fri Feb 25 01:11:50 2011 +0100
+++ b/setup.py  Wed Jul 13 20:40:42 2011 -0700
@@ -10,7 +10,7 @@
 
 baselibs = ['tiff','png','jpeg','SDL','SDL_gfx','SDL_image','m']
 
-include_dirs = ['/usr/local/include'] + get_numpy_include_dirs()
+include_dirs = ['/opt/local/include'] + get_numpy_include_dirs()
 swig_opts = ["-c++"] + ["-I" + d for d in include_dirs]
 
 iulib = Extension('_iulib',

(ocropuspython)jason@rainmaker:~/play/ocropuspython/src/pyopenfst$ hg diff
diff -r cfdc18d21ed6 openfst_properties.i
--- a/openfst_properties.i      Tue Mar 01 11:14:59 2011 +0100
+++ b/openfst_properties.i      Wed Jul 13 20:41:55 2011 -0700
@@ -65,9 +65,7 @@
 uint64 ConcatProperties(uint64 inprops1, uint64 inprops2,
                         bool delayed = false);
 uint64 DeterminizeProperties(uint64 inprops, bool has_subsequential_label);
-uint64 DifferenceProperties(uint64 inprops1, uint64 inprops2);
 uint64 FactorWeightProperties(uint64 inprops);
-uint64 IntersectProperties(uint64 inprops1, uint64 inprops2);
 uint64 InvertProperties(uint64 inprops);
 uint64 ProjectProperties(uint64 inprops, bool project_input);
 uint64 RelabelProperties(uint64 inprops);
@@ -78,15 +76,8 @@
 uint64 ReverseProperties(uint64 inprops);
 uint64 ReweightProperties(uint64 inprops);
 uint64 RmEpsilonProperties(uint64 inprops, bool delayed = false);
+uint64 ShortestPathProperties(uint64 props);
 uint64 SynchronizeProperties(uint64 inprops);
 uint64 UnionProperties(uint64 inprops1, uint64 inprops2, bool delayed = false);
 
-%inline %{
-const char *PropertyBitName(int bit)
-{
-       if (bit > 63)
-               return NULL;
-       else
-               return PropertyNames[bit];
-}
-%}
+extern const char *PropertyNames[];
diff -r cfdc18d21ed6 openfst_symtab.i
--- a/openfst_symtab.i  Tue Mar 01 11:14:59 2011 +0100
+++ b/openfst_symtab.i  Wed Jul 13 20:41:55 2011 -0700
@@ -4,40 +4,41 @@
          "Symbol table class, map input/output symbol IDs to and from 
strings.") SymbolTable;
 struct SymbolTable {
     %feature("docstring", "Create a new symbol table with identifying name.");
-    SymbolTable(std::string const & name);
+    SymbolTable(const std::string& name);
     %feature("docstring", "Add a symbol to the symbol table, optionally with a 
specific\n"
              "numeric ID.  Returns the numeric ID assigned to this symbol 
(which may\n"
              "already exist).");
-    long long AddSymbol(std::string const & name, long long id);
-    long long AddSymbol(std::string const & name);
+    uint64 AddSymbol(const std::string& symbol, uint64 key);
+    uint64 AddSymbol(const std::string& symbol);
     %feature("docstring", "Merge the contents of another symbol table into 
this one.");
-    void AddTable(SymbolTable const & symtab);
+    void AddTable(const SymbolTable& table);
     %feature("docstring", "Returns the identifying name of this symbol 
table.");
-    std::string const & Name() const;
+    const std::string& Name() const;
     std::string CheckSum() const;
+    std::string LabeledCheckSum() const;
     %feature("docstring", "Return a copy of this symbol table.");
     SymbolTable *Copy() const;
     %feature("docstring", "Read entries from a text file.");
-    static SymbolTable* ReadText(std::string const & filename,
+    static SymbolTable* ReadText(const std::string& filename,
                                  bool allow_negative = false);
     %feature("docstring", "Write entries to a text file.");
-    bool WriteText(std::string const & filename) const;
+    bool WriteText(const std::string& filename) const;
     %feature("docstring", "Read entries from a binary file.");
-    static SymbolTable *Read(std::string const & filename);
+    static SymbolTable* Read(const std::string& filename);
     %feature("docstring", "Write entries to a binary file.");
-    bool Write(std::string const & filename) const;
+    bool Write(const std::string& filename) const;
     %feature("docstring",
              "Look up a symbol or numeric ID in the table.  If called with a 
string,\n"
              "returns the ID for that string or -1 if not found.  If called 
with an\n"
              "integer, returns the string for that ID, or the empty string if 
not found.");
-    std::string Find(long long id) const;
-    long long Find(std::string const & name);
+    std::string Find(uint64 key) const;
+    uint64 Find(const std::string& symbol) const;
     %feature("docstring",
              "Returns the next automatically-assigned symbol ID.");
-    long long AvailableKey(void) const;
+    uint64 AvailableKey(void) const;
     %feature("docstring",
              "Returns the number of unique symbols in this table.");
-    unsigned long NumSymbols(void) const;
+    size_t NumSymbols(void) const;
 
     %extend {
         %pythoncode %{
@@ -54,10 +55,10 @@
          "for symbol, id in symtab:\n"
          "    print \"symbol %s has id %d\" % (symbol, id)\n") 
SymbolTableIterator;
 struct SymbolTableIterator {
-    SymbolTableIterator(SymbolTable const & symtab);
+    SymbolTableIterator(const SymbolTable& table);
     bool Done(void);
-    const char * Symbol(void);
-    long long Value(void);
+    std::string Symbol(void);
+    uint64 Value(void);
     void Next(void);
     void Reset(void);
 };
diff -r cfdc18d21ed6 openfst_templates.i
--- a/openfst_templates.i       Tue Mar 01 11:14:59 2011 +0100
+++ b/openfst_templates.i       Wed Jul 13 20:41:55 2011 -0700
@@ -337,23 +337,32 @@
 template<class M> class RhoMatcher {
 public:
     typedef typename M::FST FST;
-    RhoMatcher(FST const &fst, MatchType match_type,
-               int rho_label=kNoLabel, bool rewrite_both=false);
+    RhoMatcher(const FST &fst,
+                 MatchType match_type,
+                 int rho_label = kNoLabel,
+                 MatcherRewriteMode rewrite_mode = MATCHER_REWRITE_AUTO,
+                 M *matcher = 0);
 };
 
 template<class M> class SigmaMatcher {
 public:
     typedef typename M::FST FST;
-    SigmaMatcher(FST const &fst, MatchType match_type,
-                 int sigma_label=kNoLabel, bool rewrite_both=false);
+    SigmaMatcher(const FST &fst,
+                   MatchType match_type,
+                   int sigma_label = kNoLabel,
+                   MatcherRewriteMode rewrite_mode = MATCHER_REWRITE_AUTO,
+                   M *matcher = 0);
 };
 
 template<class M> class PhiMatcher {
 public:
     typedef typename M::FST FST;
-    PhiMatcher(FST const &fst, MatchType match_type,
-               int phi_label=kNoLabel, bool phi_loop=true,
-               bool rewrite_both=false);
+    PhiMatcher(const FST &fst,
+               MatchType match_type,
+               int phi_label = kNoLabel,
+               bool phi_loop = true,
+               MatcherRewriteMode rewrite_mode = MATCHER_REWRITE_AUTO,
+               M *matcher = 0);
 };
 
 /* Compose options. */

-- 
You received this message because you are subscribed to the Google Groups 
"ocropus" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/ocropus?hl=en.

Reply via email to