Adria - Inventory Management System

Re: Adria - Inventory Management System

Version 4.4.0 beta installer uploaded to googlecode.

Users who have had a 6-item limit while scanning please try it out and see if the issue is gone or not.

Will do as soon as I get home tonight!


 
Re: Adria - Inventory Management System

beware that the scan keys and way of scanning have been changed
read the files and do some tests before fully using it
 
Re: Adria - Inventory Management System

Hi Kijya and JustAPlayer,
Just found this system today, and I am looking forward to using it pretty regularly. I read through about the first 10 pages of posts on various comments and changes that have been made but after that decided it would probably be much more efficient just to read the user guide included with the program after download. It looks like you guys put a lot of hard work and effort in this and it is greatly appreciated. I will be sure to let you know how it works out after I download and install it tonight.

Thanks!
 
Re: Adria - Inventory Management System

The documentation is rather bad sadly, I've been a bit (a lot) on the lazy side when it comes to writing it.

I've figured out a new plan that could make things easier however. I think we might do a list of questions asking how to do must things and as answers provide links to small demo videos like the one I made in this post: http://www.purediablo.com/forums/showthread.php?p=7850661#post7850661

Creating a larger set of such short demo videos should be easier then making an all covering long one.
 
Re: Adria - Inventory Management System

Well after reading through the first few pages, it seemed that it could take a while to read and understand all the various changes since the first tutorial video was made so I was hoping the user manual would have a more formatted guidance kind of look to it incorporating system changes. An overall posting with various tasks completed such as changing settings or exporting trade lists would probably be helpful to new users though.
 
Re: Adria - Inventory Management System

The only big changes made since the tutorial video concern the tradelist maker and now the ingame window.

If you have a look at the video I linked to in my last post that should get you going on the most basic usage of the tradelist maker, but it doesn't explain any of the customization options available.

For the ingame window you should just press F1 and have a look at the help messages displayed to get going, but I'll have to do a proper explanation soon ...
 
Re: Adria - Inventory Management System

Why isn't my insert key working?!

Windows 7 32-bit
diablo II windowed mode, running you most recent update.
 
Re: Adria - Inventory Management System

Why isn't my insert key working?!

Windows 7 32-bit
diablo II windowed mode, running you most recent update.
Press F1 for a list of the new controls, the different scanning options have been moved to F5-F8. F8 is the one that does what insert did before. :cloud9:



 
Re: Adria - Inventory Management System

im getting the same error as the above poster

another thing is that the program is asking me to 'add symbol' for every single word/number/symbol, which im not so sure what's happening.
 
Re: Adria - Inventory Management System

I'm now getting Error: OCR Returned nothing of value when using F8.
im getting the same error as the above poster

another thing is that the program is asking me to 'add symbol' for every single word/number/symbol, which im not so sure what's happening.
I'll try recording a demo today, since the new letter recognition needs some explaining. However, Theol, you should be on the right track. If you're getting the add symbol phase then you should simply type in the symbol and hit enter. If it's something that is not a correct symbol (something outside the item description) then leave it at the default "?" and just hit enter.

Once you've done it once for a symbol you should not have to do it again for that symbol. However there can be some differences between different colors, so the different versions of the same letter might require separate identifications. I know this is a bit bothersome in the beginning, but this way it can work for any graphical settings, and in the end you should get a 100% accurate OCR at all times.

Once all symbols have been added you can activate the "singlelock" by pressing F3 until it states that it in ON. This lock basically states if the symbol database is complete or not. If it is complete then anything not in the database should be recognized as "?" by default, whereas having it OFF lets you add symbols not in the database.


@Asrrin: If you're not getting the add symbol phase then you might have turned "singlelock" to ON by mistake. As mentioned activating singlelock means that anything not in the symbol database gets set to the default of "?", and if nothing is in the symbol database then the OCR will return quite a few "?" ... the cleanup phase that takes place before storing an item in your item database will notice this an basically goes "ocr, have you been drinking?".





I'm kinda planning to automate the "add symbol" phase and box it into a calibration function. However, that will still take some time, so did this release beforehand.



 
Re: Adria - Inventory Management System

it's getting real confusing.

at times the symbol shows us half a letter, eg, half a 'U'. so should i put it as a U, or a '?'

and how do i fix letters that i entered wrongly. im getting 'in of the vipermagi's in my scans now. D:

and... more importantly, why is it that we didn't have to do this letter recognition thingy in the last versions?
 
Re: Adria - Inventory Management System

it's getting real confusing.

at times the symbol shows us half a letter, eg, half a 'U'. so should i put it as a U, or a '?'
The OCR works with thresholds to identify the letter positions. When a letter is spit in half this just means that you can draw a vertical line through it where the pixel-intensities are all below the threshold.

I'm afraid any operations I could do to avoid these rare cases would just take extra CPU power for all the other letters. To handle this issue I suggest calling the left part of U for "(U" and the right part "U)", then open the correction manager from application-> settings-> OCR tab and add a AutoFix entry "(UU)" to be replaced by "U".

To add an autofix entry go to the autofix tab in the correction manager, click on the red/black table, hit [insert] to add a new line. Double click to select which cell to edit. Remember to hit the save button.

and how do i fix letters that i entered wrongly. im getting 'in of the vipermagi's in my scans now. D:
You can either clear the entire letter database in application-> settings-> OCR tab-> clear single, or you can open the mdb file located in your installation folder with microsoft access and edit the "CharSet" table manually.

and... more importantly, why is it that we didn't have to do this letter recognition thingy in the last versions?
Previous versions had hard coded letter recognition, which requires more work to make, especially if we aim to add support for additional languages at some point. It also gives worse results in general unless your graphical settings are identical to mine.

Old code:
Code:
Private Function GetLetter(Left As Single, Right As Single, YPos As Single, Pivot As Byte) As String

      On Error GoTo GetLetter_Error


1        Select Case Abs(Left - Right)
              Case 13
2                GetLetter = "W"

3            Case 11
4                GetLetter = "w"

5            Case 10
6                If BrightPixel(5, 11, Left, YPos, Pivot) Then
7                    If BrightPixel(0, 2, Left, YPos, Pivot) Then
8                        If BrightPixel(1, 7, Left, YPos, Pivot) Then
9                           GetLetter = "M"
10                       Else
11                           GetLetter = "T"
12                       End If
13                   Else
14                       If BrightPixel(5, 3, Left, YPos, Pivot) Then
15                           GetLetter = "0"
16                       Else
17                           GetLetter = "U"
18                       End If
19                   End If
20               Else
21                   If BrightPixel(4, 11, Left, YPos, Pivot) Then
22                       GetLetter = "V"
23                   Else
24                       If BrightPixel(1, 2, Left, YPos, Pivot) Then
25                           If BrightPixel(1, 10, Left, YPos, Pivot) Then
26                               GetLetter = "X"
27                           Else
28                               GetLetter = "%"
29                           End If
30                       Else
31                           GetLetter = "w"
32                       End If
33                   End If
34               End If
                  
35           Case 9
36               If BrightPixel(4, 6, Left, YPos, Pivot) Then
37                   If BrightPixel(0, 11, Left, YPos, Pivot) Then
38                       If BrightPixel(7, 5, Left, YPos, Pivot) Then
39                           GetLetter = "M"
40                       Else
41                           GetLetter = "R"
42                       End If
43                   Else
44                       If BrightPixel(4, 8, Left, YPos, Pivot) Then
45                           If BrightPixel(4, 2, Left, YPos, Pivot) Then
46                               GetLetter = "O"
47                           Else
48                               GetLetter = "Y"
49                           End If
50                       Else
51                           GetLetter = "0"
52                       End If
53                   End If
54               Else
55                   If BrightPixel(0, 11, Left, YPos, Pivot) Then
56                       GetLetter = "A"
57                   Else
58                       If BrightPixel(8, 8, Left, YPos, Pivot) Then
59                           GetLetter = "Q"
60                       Else
61                           If BrightPixel(0, 3, Left, YPos, Pivot) Then
62                               If BrightPixel(7, 5, Left, YPos, Pivot) Then
63                                   GetLetter = "T"
64                               Else
65                                   GetLetter = "V"
66                               End If
67                           Else
68                               GetLetter = "u"
69                           End If
70                       End If
71                   End If
72               End If

73           Case 8
74               If BrightPixel(3, 6, Left, YPos, Pivot) Then
75                   If BrightPixel(5, 10, Left, YPos, Pivot) Then
76                       If BrightPixel(0, 7, Left, YPos, Pivot) Then
77                           GetLetter = "m"
78                       Else
79                           If BrightPixel(4, 6, Left, YPos, Pivot) Then
80                               GetLetter = "a"
81                           Else
82                               GetLetter = "x"
83                           End If
84                       End If
85                   Else
86                       If BrightPixel(0, 7, Left, YPos, Pivot) Then
87                           GetLetter = "N"
88                       Else
89                           If BrightPixel(4, 5, Left, YPos, Pivot) Then
90                               GetLetter = "t"
91                           Else
92                               If BrightPixel(0, 3, Left, YPos, Pivot) Then
93                                   GetLetter = "X"
94                               Else
95                                   GetLetter = "x"
96                               End If
97                           End If
98                       End If
99                  End If
100              Else
101                  If BrightPixel(0, 7, Left, YPos, Pivot) Then
102                      If BrightPixel(0, 2, Left, YPos, Pivot) Then
103                          GetLetter = "D"
104                      Else
105                          GetLetter = "C"
106                      End If
107                  Else
108                      If BrightPixel(0, 6, Left, YPos, Pivot) Then
109                          GetLetter = "v"
110                      Else
111                          If BrightPixel(0, 11, Left, YPos, Pivot) Then
112                              GetLetter = "A"
113                          Else
114                              GetLetter = "y"
115                          End If
116                      End If
117                  End If
118              End If

119          Case 7
120              If BrightPixel(3, 8, Left, YPos, Pivot) Then
121                  If BrightPixel(0, 8, Left, YPos, Pivot) Then
122                      If BrightPixel(4, 2, Left, YPos, Pivot) Then
123                          GetLetter = "4"
124                      Else
125                          If BrightPixel(2, 12, Left, YPos, Pivot) Then
126                              GetLetter = "q"
127                          Else
128                              If BrightPixel(1, 8, Left, YPos, Pivot) Then
129                                  GetLetter = "o"
130                              Else
131                                  GetLetter = "m"
132                              End If
133                          End If
134                      End If
135                  Else
136                      If BrightPixel(0, 5, Left, YPos, Pivot) Then
137                          If BrightPixel(3, 3, Left, YPos, Pivot) Then
138                              If BrightPixel(0, 11, Left, YPos, Pivot) Then
139                                  GetLetter = "R"
140                              Else
141                                  GetLetter = "9"
142                              End If
143                          Else
144                              If BrightPixel(0, 10, Left, YPos, Pivot) Then
145                                  GetLetter = "x"
146                              Else
147                                  GetLetter = "t"
148                              End If
149                          End If
150                      Else
151                          If BrightPixel(1, 3, Left, YPos, Pivot) Then
152                              If BrightPixel(3, 3, Left, YPos, Pivot) Then
153                                  GetLetter = "Z"
154                              Else
155                                  GetLetter = "K"
156                              End If
157                          Else
158                              GetLetter = "n"
159                          End If
160                      End If
161                  End If
162              Else
163                  If BrightPixel(5, 8, Left, YPos, Pivot) Then
164                      If BrightPixel(3, 3, Left, YPos, Pivot) Then
165                          GetLetter = "6"
166                      Else
167                          If BrightPixel(0, 3, Left, YPos, Pivot) Then
168                              GetLetter = "H"
169                          Else
170                              GetLetter = "d"
171                          End If
172                      End If
173                  Else
174                      If BrightPixel(6, 5, Left, YPos, Pivot) Then
175                          GetLetter = "c"
176                      Else
177                          If BrightPixel(2, 3, Left, YPos, Pivot) Then
178                              If BrightPixel(5, 7, Left, YPos, Pivot) Then
179                                  GetLetter = "G"
180                              Else
181                                  GetLetter = "C"
182                              End If
183                          Else
184                              If BrightPixel(5, 5, Left, YPos, Pivot) Then
185                                  GetLetter = "q"
186                              Else
187                                  GetLetter = "k"
188                              End If
189                          End If
190                      End If
191                  End If
192              End If

193          Case 6
194              If BrightPixel(2, 7, Left, YPos, Pivot) Then
195                  If BrightPixel(3, 10, Left, YPos, Pivot) Then
196                      If BrightPixel(2, 2, Left, YPos, Pivot) Then
197                          If BrightPixel(0, 3, Left, YPos, Pivot) Then
198                              GetLetter = "3"
199                          Else
200                              GetLetter = "5"
201                          End If
202                      Else
203                          If BrightPixel(5, 8, Left, YPos, Pivot) Then
204                              GetLetter = "S"
205                          Else
206                              GetLetter = "E"
207                          End If
208                      End If
209                  Else
210                      If BrightPixel(0, 3, Left, YPos, Pivot) Then
211                          If BrightPixel(4, 4, Left, YPos, Pivot) Then
212                              GetLetter = "P"
213                          Else
214                              GetLetter = "F"
215                          End If
216                      Else
217                          If BrightPixel(0, 8, Left, YPos, Pivot) Then
218                              If BrightPixel(5, 7, Left, YPos, Pivot) Then
219                                  GetLetter = "n"
220                              Else
221                                  GetLetter = "h"
222                              End If
223                          Else
224                              If BrightPixel(5, 9, Left, YPos, Pivot) Then
225                                  GetLetter = "a"
226                              Else
227                                  GetLetter = "/"
228                              End If
229                          End If
230                      End If
231                  End If
232              Else
233                  If BrightPixel(2, 6, Left, YPos, Pivot) Then
234                      If BrightPixel(2, 5, Left, YPos, Pivot) Then
235                          If BrightPixel(4, 11, Left, YPos, Pivot) Then
236                              If BrightPixel(3, 4, Left, YPos, Pivot) Then
237                                  GetLetter = "g"
238                              Else
239                                  GetLetter = "L"
240                              End If
241                          Else
242                              GetLetter = "8"
243                          End If
244                      Else
245                          If BrightPixel(0, 6, Left, YPos, Pivot) Then
246                              GetLetter = "B"
247                          Else
248                              GetLetter = "3"
249                          End If
250                      End If
251                  Else
252                      If BrightPixel(2, 4, Left, YPos, Pivot) Then
253                          If BrightPixel(2, 3, Left, YPos, Pivot) Then
254                              GetLetter = "G"
255                          Else
256                              GetLetter = "r"
257                          End If
258                      Else
259                          If BrightPixel(0, 4, Left, YPos, Pivot) Then
260                              If BrightPixel(2, 3, Left, YPos, Pivot) Then
261                                  GetLetter = "2"
262                              Else
263                                  GetLetter = "z"
264                              End If
265                          Else
266                              If BrightPixel(0, 7, Left, YPos, Pivot) Then
267                                  If BrightPixel(0, 5, Left, YPos, Pivot) Then
268                                      GetLetter = "d"
269                                  Else
270                                      GetLetter = "g"
271                                  End If
272                              Else
273                                  If BrightPixel(0, 3, Left, YPos, Pivot) Then
274                                      If BrightPixel(5, 10, Left, YPos, Pivot) Then
275                                          GetLetter = "Z"
276                                      Else
277                                          GetLetter = "7"
278                                      End If
279                                  Else
280                                      If BrightPixel(0, 5, Left, YPos, Pivot) Then
281                                          GetLetter = "z"
282                                      Else
283                                          GetLetter = "c"
284                                      End If
285                                  End If
286                              End If
287                          End If
288                      End If
289                  End If
290              End If

291          Case 5
292              If BrightPixel(0, 7, Left, YPos, Pivot) Then
293                  If BrightPixel(2, 11, Left, YPos, Pivot) Then
294                      If BrightPixel(3, 8, Left, YPos, Pivot) Then
295                          GetLetter = "e"
296                      Else
297                          If BrightPixel(3, 7, Left, YPos, Pivot) Then
298                              GetLetter = "E"
299                          Else
300                              GetLetter = "L"
301                          End If
302                      End If
303                  Else
304                      If BrightPixel(0, 10, Left, YPos, Pivot) Then
305                          If BrightPixel(4, 10, Left, YPos, Pivot) Then
306                              If BrightPixel(0, 4, Left, YPos, Pivot) Then
307                                  GetLetter = "B"
308                              Else
309                                  GetLetter = "h"
310                              End If
311                          Else
312                              GetLetter = "f"
313                          End If
314                      Else
315                          If BrightPixel(2, 6, Left, YPos, Pivot) Then
316                              GetLetter = "+"
317                          Else
318                              GetLetter = "r"
319                          End If
320                      End If
321                  End If
322              Else
323                  If BrightPixel(0, 10, Left, YPos, Pivot) Then
324                      If BrightPixel(1, 4, Left, YPos, Pivot) Then
325                          GetLetter = "S"
326                      Else
327                          GetLetter = "s"
328                      End If
329                  Else
330                      If BrightPixel(3, 7, Left, YPos, Pivot) Then
331                          GetLetter = "b"
332                      Else
333                          GetLetter = "l"
334                      End If
335                  End If
336              End If
    
337          Case 4
338              If BrightPixel(3, 9, Left, YPos, Pivot) Then
339                  GetLetter = ")"
340              Else
341                  If BrightPixel(3, 7, Left, YPos, Pivot) Then
342                      If BrightPixel(3, 11, Left, YPos, Pivot) Then
343                          GetLetter = "e"
344                      Else
345                          If BrightPixel(2, 7, Left, YPos, Pivot) Then
346                              GetLetter = "f"
347                          Else
348                              GetLetter = "p"
349                          End If
350                      End If
351                  Else
352                      If BrightPixel(3, 6, Left, YPos, Pivot) Then
353                          GetLetter = "-"
354                      Else
355                          If BrightPixel(3, 5, Left, YPos, Pivot) Then
356                              GetLetter = "k"
357                          Else
358                              GetLetter = "l"
359                          End If
360                      End If
361                  End If
362              End If

363          Case 3
364              If BrightPixel(2, 12, Left, YPos, Pivot) Then
365                  GetLetter = "("
366              Else
367                  If BrightPixel(0, 7, Left, YPos, Pivot) Then
368                      If BrightPixel(1, 6, Left, YPos, Pivot) Then
369                          GetLetter = "I"
370                      Else
371                          GetLetter = "l"
372                      End If
373                  Else
374                      If BrightPixel(1, 7, Left, YPos, Pivot) Then
375                          GetLetter = "1"
376                      Else
377                          GetLetter = ":"
378                      End If
379                  End If
380              End If

381          Case 2
382              If BrightPixel(0, 12, Left, YPos, Pivot) Then
383                  If BrightPixel(1, 5, Left, YPos, Pivot) Then
384                      GetLetter = "J"
385                  Else
386                      GetLetter = "j"
387                  End If
388              Else
389                  If BrightPixel(0, 2, Left, YPos, Pivot) Then
390                      GetLetter = "1"
391                  Else
392                      If BrightPixel(1, 0, Left, YPos, Pivot) Then
393                          GetLetter = "'"
394                      Else
395                          If BrightPixel(1, 6, Left, YPos, Pivot) Then
396                              GetLetter = "I"
397                          Else
398                              If BrightPixel(0, 6, Left, YPos, Pivot) Then
399                                  GetLetter = "i"
400                              Else
401                                  GetLetter = ","
402                              End If
403                          End If
404                      End If
405                  End If
406              End If

407          Case 1
408              If BrightPixel(0, 9, Left, YPos, Pivot) Then
409                  GetLetter = "i"
410              Else
411                  If BrightPixel(0, 2, Left, YPos, Pivot) Then
412                      GetLetter = "'"
413                  Else
414                      GetLetter = "?"
415                  End If
416              End If
417          Case Else
418              GetLetter = "?"
419      End Select

    On Error GoTo 0
420     Exit Function

GetLetter_Error:

421      Debug.Print "Error " & Err.Number & " (" & Err.Description & _
          ") on line " & Erl & " in procedure GetLetter of Module OCR_Engine"

End Function

If it was just writing 421 lines of code that's no big deal, the big work involved is determining the coordinates for each call to "BrightPixel(X,Y, ...)".



 
Re: Adria - Inventory Management System

Alright, I finally got it working, thanks! It looks like I am able to add more than 4-6 items at a time. However, I definitely urge you to try and automate the OCR calibration, and include a more clear and concise way of explaining the controls, because people want to use this to simplify tracking items, not making it more complex. Once you get around those two rather steep curves, this is a powerful tool, but those two things are biggies. :thumb:
 
Re: Adria - Inventory Management System

Ah, just got another error to pop up. After some time, the keyboard hooks stop functioning and I am unable to continue the OCR calibration, or anything for that matter, including using the F12 hook to enable/disable the engine.

Also, when I shut down the engine after this, it forgets all of the items I have added to the program, but still remembers which characters and accounts I have added.
 
Re: Adria - Inventory Management System

Asrrin said:
Alright, I finally got it working, thanks! It looks like I am able to add more than 4-6 items at a time. However, I definitely urge you to try and automate the OCR calibration, and include a more clear and concise way of explaining the controls, because people want to use this to simplify tracking items, not making it more complex. Once you get around those two rather steep curves, this is a powerful tool, but those two things are biggies. :thumb:
I'll be thinking of how to make the calibration simpler then I guess, although spending some time on recording demo videos would also help. :cloud9:

Ah, just got another error to pop up. After some time, the keyboard hooks stop functioning and I am unable to continue the OCR calibration, or anything for that matter, including using the F12 hook to enable/disable the engine.

Also, when I shut down the engine after this, it forgets all of the items I have added to the program, but still remembers which characters and accounts I have added.
Glad to have you bring it to our attention and help us with some debugging. Thanks.



 
Re: Adria - Inventory Management System

Mmmh I downloaded the 4.3.0 installer, but everytime I try to launch it, I get the windows error sound, and nothing else, no messages or anything. Tried running it in compability mode, but that gave the same result.

OS is windows 7 64 bit by the way

Any ideas/suggestions?
 
Re: Adria - Inventory Management System

Mmmh I downloaded the 4.3.0 installer, but everytime I try to launch it, I get the windows error sound, and nothing else, no messages or anything. Tried running it in compability mode, but that gave the same result.

OS is windows 7 64 bit by the way

Any ideas/suggestions?
Install codejock controls, download on the same page as the adria installer.



 
Back
Top