掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 28166|回复: 45

[索引] 词库制作中可能有用的软件、技术整理[201710919]

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
4 c& l$ Q5 Y; y$ z/ t
2 ?! D& O2 ^  K! d6 W8 z; U  u! {2 e6 [5 g4 ^; o8 i
FAQ
/ j" ^( h! m& C5 l* d# ~>>  未加密的 mdx 如何转为txt?
9 {0 e5 d+ [& w6 ]工具①,GetDict.exe by yhssdl。下载地址:* R7 Q# z- z5 Q
http://pan.baidu.com/share/link? ... 67&uk=305151372
) f0 z) z. f7 M6 p* R+ n" {  o! ~' P# W; E, a. C5 ^) G! {
>>9 B7 q- Z$ h0 [* Z; f) ^
[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
; ^' s' L' C0 ]% j% R! H3 y4 s0 o2 q

( |2 q) \7 y' A& `3 E9 B' A老马的原创空间 http://www.cnblogs.com/stronghorse/
0 n" _5 j2 B( e/ i) M- o" H+ _8 }
7 Y4 l0 X* ?/ T! |' j' [2 ~) ]
bgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948  x3 A) D1 R2 i; t; J! N
8 a6 I. G$ i; [/ G; v* P7 m  j6 L! J! T
) t  y" G( i* u0 ]

% s% X9 F. F" Q6 O" Q9 d; o' _6 ?3 {& s& s( J
2 \, y! @4 s! {8 [

( P! m5 c4 q- n6 `7 g7 j% X* u整理中,欢迎补充
$ w: ~+ C4 W9 k- {7 kmdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
- s9 e' Z' Z7 k' \* p7 P' S7 p! Y正则表达式Regular Expression, html, xml, div+css,
  u5 R% O$ C1 y4 f! V2 F编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
' ^1 g4 U6 s5 M' g& j程序设计语言:! ?2 ]+ K; v% d  r
Python;C++;
) F4 q) Z/ G5 APerl# m6 `! q& s+ a! D
JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp
: ]* J4 \: d% a7 Q9 E! HVBS/VBA9 f+ H  S6 H$ Y/ R3 ]+ ~( f3 v
http://www31.ocn.ne.jp/~h_ishida/scripts.html7 R3 B* P( x% H; W4 Q( Y
数据库软件:! w( Y. F7 O# b1 {: {5 `' x3 ~
Navicat Premium
: O4 c/ s7 U. F* dSQLiteSpy,PowerBuilder
; v( p: _. C# Z  \# r: H, H8 GSQLite Expert Professional
/ v& d) q0 W% Z  E软件:  ^% g3 o6 B8 a% r8 Z
MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm
9 ~6 J& }, Z' v5 e
% F2 C$ S4 Z1 H% H$ a6 T/ x文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
; A0 G  s, ~4 E& ^Replace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq
( \# M1 G7 }6 c: @9 bRaptor 3 http://softfie.com/software/hacktool-raptor.html1 |& F* g' `! g9 w7 a5 }4 N4 i# {1 O
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download" ^1 y+ o+ a- H

3 b- c9 J2 ?* Y2 y) VMicroft Office:Word, Excel, Access
+ u$ ]/ R2 f+ [Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro$ T8 _! S! K# h4 f' ]2 U) X1 J
OCR:ABBYY FineReader0 j1 x3 O$ E" N0 ?( n  f; f: A
DWS: Tlex% E7 F5 L/ R. ~( k- C' \
浏览器:Firefox, Chrome4 s( Y6 ~4 \+ y. z* L6 U2 @

8 N' Z& \* w/ v# R解压缩软件/ S" Q" U. A# e& h

: ~$ c/ d" l6 E& [7 f  G1 s. H8 _* e. c$ a3 c( I! Y
离线下载类:5 t) |! f  h: M  {6 H
wget, Teleport Pro, OfflineExplorer
* D; H. O4 o" q: a5 X其他. w4 @1 O2 F2 ]$ t2 X
Fiddler 2,
/ R8 p: T( d% aSQLiteSpy
) D: f: B8 |1 f1 x6 qyhssdl的GetDict2.6
4 k9 T4 c' z( s: d0 }2 [3 q9 |AudioTranscoder4 h+ G+ ]& X6 W" y% S( h7 ?+ W
按键精灵8 y/ _. h, T  g; f
Tvangeste / dictzip-win32
& f5 g' D9 e+ ~' U8 Q9 hhttps://github.com/Tvangeste/dictzip-win32/releases/( u- w0 _% d: B" D

8 l/ r% ?$ t3 R7 ?2 I" D2 ddsl相关软件:
$ t% |2 H: E1 ]2 w( P) o2 R8 pDSLGD
/ a% [) m# L& L0 B, F4 w  y1 L  z7 g! T
有参考价值的技术(讨论)贴:& S! f* s3 T( ^: X; n2 {- [* \+ q  h, Z5 W
0. superfan89
; q7 o: Q+ _0 v* K# L[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码
- r2 M, S# x5 i  Ehttps://github.com/superfan89/IDMSKconv IDMSKconv源码
( e! B. C5 z7 U; n* n* Ohttp://dicwizard.jp/jamming_ug.html7 j1 z: P8 o: H5 e
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼' _% w8 K' o- Y; m

/ o4 p7 U: ^& w8 X' u9 q0 x* [1. chigre! I( F# |6 e/ z, l+ t( E
【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
! I) O# M$ i5 T2 Y% w6 k% I% q3 {各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html* F- d$ t3 k5 k0 I% r$ k0 m. z1 Y
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
9 p* o/ }; Z; M0 G7 G, ^1 q* L1 b2 L2 W0 F' P- k" K
2. Hugh( `% M, Y5 a6 B) h
【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
# v) Z) W8 x, i2 z% i- K' r# g$ v- g, F4 A+ j- [% C% N, o- m5 |0 e3 S1 C
3. ldlcau
8 a. X4 C0 C/ d& D# S, Emdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html& {) f7 ^2 p- D! I# j8 [
0 m5 R8 n0 b( U% A
4. Oeasy* E8 T4 S. O$ E# W) u
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html! J7 B2 _. h+ f" e) I7 x  q

8 i5 s9 W3 v. u5. jjcizi
- M; `, S2 i! c4 g2 X1 d  l/ W3 q" B[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html
9 y' {7 W$ m' A4 S
9 D! n; F; O6 B# K0 w' o6. sunsmile236 K$ e. I' u5 S5 Z; J5 k
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
& @8 M( G# u) o3 J" F& Q/ ivba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html+ a% u# e% L' c- Z) D% @& Q

  b" f7 S; c* d: b, O  D8 N; k5 J7 T7. sjn01
! H. V( L( \# O3 N求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html3 P: r) }& w' l0 W

) t, h% H5 T! F$ Q8. 惟吾无为
' |- q1 z/ E) L) Flinux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html% Z: X0 _$ s; M( e' Z& P# v

5 G% ?) s. x5 L" A7 d0 T4 K9. freegut
( R" o" k8 @$ D% S分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html' I- _. l* h: z. {! a
. R' q3 Y4 T( @9 S1 s' h: }
8. zhu1234. q  }' d% O7 ], S0 o2 U
Mdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
1 ~/ ]  k, |1 s" d$ q, ]
: ^+ i  A3 q0 c  E3 F! r9. 发哥
) P9 _! Z" l+ T+ a0 h1 W0 m[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。
; m! W. W4 R* b5 D; f
" b2 H. ~0 Y! G5 ~5 L  J10. FHYVUCBRUG
# m! r- r% y, e4 E0 [* [https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py/ E: q7 _$ ]( b) E. E
- L1 ~: n3 L- e- g) I! M8 W" l
11. 手把手教你转换辞典
, z+ G' N' P, S8 {; q  ehttp://bbs.emagic.org.cn/forum.p ... ntable&tid=5278
% J. D5 {/ x1 S9 Hhttp://www31.ocn.ne.jp/~h_ishida/scripts.html! D9 M: Q  U" y  ?

% V5 t1 b7 E- ]0 Q, O0 L1 |4 ]
) _6 i1 A: s9 E- _$ _--! @( U. v* V' b3 b8 d. s
http://blog.yeshj.com/luodean/* q$ e* A8 n, |) Z" r
老马的原创空间:http://www.comicer.com/stronghorse/index.htm6 G' `+ W% O! ~7 b$ p
---* D- T6 n( l5 W
1.  Ultra Edit中如何删除包含特定内容的行?9 U0 E% O" Q6 z+ j4 t- H( @0 v7 B
如某文件中有些行含有特定内容PTTAddress
' y% I; r& d+ j7 Q  X' _a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;
0 j1 {5 N7 u# }0 y' ~b. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;
, ?5 n6 f# |( s2 X& H% da. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;5 c0 r% R# J: @/ g
b. 在搜索结果中选择拷贝到粘贴板;: `/ j1 c& o0 P% v
c. 新建一空白文件,然后ctrl+v。
7 n+ U7 [( {$ A2 R4 f3 O

- L6 @8 V! g+ C% @1 s2. 使用wget如何登录后再下载" t; r& ~9 M; W% r3 i+ p
http://tilt.lib.tsinghua.edu.cn/node/213: E% d  |, v! B" q5 O
% p8 i0 N# C1 R* N
3. 如何批量修改文件后缀名?& w0 F1 z& E8 |0 k
http://zhidao.baidu.com/question/423790075.html  X/ G# P) a0 D6 n( t# }
6 I! C4 N7 N, j8 s
4. 如何把多个文本文档合并成一个4 b" {4 h6 ~. r8 U
http://zhidao.baidu.com/question/172524472.html
& D: n+ ?/ I) c" m" c2 |, V3 r& |& l1 O4 O
5. EPWING转txt
, F" {& S! ^4 y7 ghttp://coffeejp.com/bbs/thread-170502-1-1.html
. }5 v' W6 |' M% y& b1 ]另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/
1 P! p4 D* ?8 U( fhttp://www.coffeejp.com/bbs/forum-22-1.html7 T+ N; c  {' u$ g* c$ g1 w
8 l6 L# \2 W' Y4 H+ X% U
6. bgl2StarDict
" i6 F+ V( W7 [! C0 X' q: Bhttp://code.google.com/p/stardict-3/wiki/ConvertBabylon$ v, V. O! G( ?8 a7 @
) F- j6 F1 q" _$ a
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器
  a* y" K" u5 I9 Q3 b& Nhttp://code.google.com/p/lingoes-extractor/
- c# x  W# ]' e3 |% G* X3 S1 @-
9 E" s+ [+ F* z4 c6 Ehttps://github.com/windylea/lingoes-converter: F$ l4 s5 X8 N2 R3 x

8 m$ m7 M# u5 y8. lsd 2 dsl9 V8 a! t7 n( z4 z4 z6 U7 h: E' Y
http://alabaxblog.info/2013/02/lsd-to-dsl-mass/
: D8 W( T# M' N7 H! G: T' ehttp://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/% O2 t8 b/ l9 v1 e# E( B  S

  W6 N8 w! K2 u+ r& P9. An Analysis of MDX/MDD File Format
* ]# E. m' j9 whttps://bitbucket.org/xwang/mdict-analysis: H3 s5 l# S( p* N! H
http://m.newsmth.net/article/LinuxDev/56948?p=1
+ H" |1 z! s3 k. ^' c! Fhttp://mdict.codeplex.com/$ \) M! ^) u/ S+ g( u+ y
6 V. y' }/ _0 E! Q
10. 5 \, ?5 f. k3 k6 F5 T
http://hanzisearcher.cnblogs.com/
, ^' B& a2 k: |' Y4 w: F! i7 C. t, a! Z+ K4 b* M1 X( e
11. RegEx Dotext 1.0
2 @# k8 J0 Z; t* `mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
: |/ \& P# T% {; U# whttps://pdawiki.com/forum/thread-11430-1-1.html
4 f  X2 F! I/ ^2 [  H$ w/ c" N2 p) S0 c
12. awk+wget实现批下载9 K* u) a6 e! p2 J9 B, s( F
http://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html9 Q1 f- }( M) L; q
  l. A3 l' t% M  h
13. 【awk学习】gawk+wget+grep写的小爬虫7 h; M) b5 c+ }1 m- D
http://bbs.byr.cn/#!article/Linux/104263
3 g' g) [; c( q& Z' B
1 G2 o; {; b1 S5 t+ f' @' k7 F0 X14. wget批量下载文件后,如何重命名!
0 S4 |* [' k- Y7 X. khttp://www.linuxsir.org/bbs/thread321272.html2 z4 I( x3 i' b3 S: R7 }5 i7 z

' `% N5 {; b( D: F& e: S# }15. http://www.regexlab.com/* }) z, N. ~+ p: ]
1 F% U$ a; }& T9 Z
16. EBDump
0 ?, n+ i+ g# m/ f. ]3 Hhttp://www31.ocn.ne.jp/~h_ishida/EBDump.html
* {. z/ Z- [8 T& m3 Y! \http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
$ L2 W8 W! r% `0 S$ g6 M! Y6 A" r! Y/ B1 O, H% Z$ M" l
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)! _, n9 s: t6 e0 k/ Y% {
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml
3 U. I- i  N2 _. R- x) E# u2 M% I( V7 }2 H1 _
18. [转]用python爬虫抓站的一些技巧总结1 Z3 E$ k- m" f+ X- f( z  J/ Y
http://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
9 k/ F  B! U# e( Z( \, {# ^3 Q/ ?" f& @5 l, a# _1 M9 f
19. Python爬虫入门教程
9 o, T' r/ F6 R- p5 ~1 C3 k7 phttp://blog.csdn.net/column/details/why-bug.html
1 ~2 V, Z, Z: M# Q+ I9 c9 O
5 m8 {6 X! u/ @- {/ ~: A8 q  o* v  k=========9 j0 h, g) _" N: N
EPWING相关:
5 L, h0 o8 C7 dhttp://hp.vector.co.jp/authors/VA021723/dessed/
- B5 [, s& s; D) T7 s
7 l3 ~% z3 X; g7 V1 T* G6 p

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 : n& W, R& r: x; F8 C
, V) Z, J% ~8 p2 ?  D) j
提取Epwing词典图片的java代码
7 \, b5 t; u1 a: jEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析
' E; F& K7 i, d首先是彩图
7 c9 T& u% i/ y0 _格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个" n. c1 N$ P5 i, v5 Q! L
提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤; s- @! d3 r3 X& q" J
先介绍用ebdump导出txt格式然后提取彩图, N/ J8 O/ R3 d7 f
  1. final static char[] DIGITS = {2 q# V; \) j; L) W& g, n& Q5 m( A
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,
    2 a7 @/ G- f8 j5 P
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F') M! K/ U" b: Q
  4. };2 c" Y" \2 V3 C! i$ e
  5. public static String toHex(int i) {5 [8 P$ X$ l" ?* X
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};
    4 h- T/ s# E, x6 e' H6 J! F+ E, P
  7.         int charPos = 8;6 D( T. a2 r* N; J: O( U- U0 i0 v* k
  8.         int mask = 0xf;1 Q( G8 H" `" I
  9.         do {; z$ \# I/ M( _; q0 w5 U. f0 b7 W
  10.             buf[--charPos] = digits[i & mask];
    : c, C3 E- W* ?, h1 ?+ n% s
  11.             i >>>= 4;5 ^3 I" }% J8 K- e" ]! E
  12.         } while (i != 0);
    2 D. {. a* e3 [1 T
  13.         if(charPos > 4) charPos = 4;
    * _' M3 |0 n2 i! n  O7 q8 o
  14.         return new String(buf, charPos, (8 - charPos));; K" J6 T3 `% f- |
  15. }
    - q/ U' b' f  k% T. U, f* _
  16. static void getColorPic(String f, String path) {
    1 a: w/ F# t" o9 ]$ d1 y# H
  17.     try {
    " J0 ], b2 D3 l( ]
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));5 G0 A2 \2 |+ M
  19.         OutputStream out = null;
    % v$ {1 q0 Q3 S
  20.         String line = "";
    % T6 b0 A! B: w6 D
  21.         String block = "";$ ?; Q1 c% Y- W, N- B# f  s0 M3 U
  22.         byte[] bs = new byte[2048];
    0 ?5 {# J7 L4 n, ], m& g. Q* Y( \
  23.         int idx = 0;! J8 p2 ?! z% B* M. P
  24.         if (!path.endsWith("/")) path += "/";
    7 \  `+ F' Y, E$ S" X
  25.         File fl = new File(path);0 e& O3 a5 j8 O4 i/ J9 x2 e
  26.         if(!fl.exists()) fl.mkdirs();/ ?3 x5 d5 b5 c$ [$ [6 h
  27.         while (((line = reader.readLine()) != null)) {' ~4 U, e& O" z3 x3 K3 U
  28.             if (line.startsWith("block")) {$ Y! F) S$ r6 A3 _4 ]' S$ Y1 ?2 y
  29.                 block = line.substring(6, line.indexOf("("));
    , P! _3 J* ]( D$ e, a, u4 k! i
  30.                 System.out.println(block);
    9 h, z  F  t4 h( P0 P- D" e. O5 S
  31.                 idx = 0;% ?( Q% f' m& h* v. Y! T8 W
  32.             }, C; C: n) I5 E3 d0 f
  33.             if (line.startsWith("0")) {. `2 ]( a" R8 r* Y, R/ L
  34.                 for(int i=0; i<16; i++) {
    9 r  N( {2 m$ S: W& R
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    # i, Z0 ?- r$ O( F5 [
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));. a: b! X) m/ }: X6 C
  37.                     bs[idx++] = (byte) (a << 4 | b);: }/ \6 x6 Y7 w  X
  38.                 }3 i! X- \  J, W* m( j$ j) ^' I. `
  39.             }
    ) \' m2 f: i/ N# K# _& u
  40.             int dts = -1;4 I$ s0 S4 ~. x
  41.             int ws = 0;! P% D* o! h2 B# S6 S4 T
  42.             if (idx == 2048) {# @/ S1 N) d* ^4 F* S7 A9 F
  43.                 for (int i=0; i<2044; i++) {
    ' G# t( p' @% F
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {9 t1 H7 G* E1 `) U* X+ g4 A$ k
  45.                         dts = i;, p. X1 ^9 T- ~8 ?
  46.                     }: j" n0 T- F/ e7 L
  47.                 }
    , G/ q& s3 U. d3 g2 ]' O+ V6 S
  48.                 if (dts != -1) {
    & S* n9 p3 {* ]2 M: U& n
  49.                     if (out != null) {
    8 {& u4 s8 [( P. c2 r6 t
  50.                         out.write(bs, 0, dts);
    6 ~3 D. _* C3 L" i
  51.                         out.flush();9 V) ?+ [; b4 j  e% _
  52.                         out.close();- C+ e) u! `- [5 h
  53.                     }
    + K. d* Y0 s. Z  W$ d5 N  N
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));5 N0 }' R8 \& _- B
  55.                     if(dts > 2040) ws = dts-2040;
    ! A  o% A% A4 \4 M
  56.                     else out.write(bs, dts + 8, 2040 - dts);- `( \4 o, ]7 R
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
    * I& j* E4 t0 W/ D
  58.                 idx = 0;% W% x. Q9 L& ^3 X
  59.             }
    , z! G# F# y/ i8 {( p
  60.         }
    ) ?" u4 |# C! T* H9 O2 j
  61.         reader.close();
    0 A- ~5 F# }- s
  62.         if (out != null) {' t; m* l7 U$ S; P$ f, r
  63.             out.flush();
    5 ^( S& k2 Q, @  ]3 N
  64.             out.close();# M% K+ g! o+ y. I
  65.         }1 L% `/ g& R' ?2 K
  66.     } catch (Exception e) {
    & }1 Q& u, h- M* d) ~/ [& V9 U
  67.         e.printStackTrace();
    + D7 q6 r% E& x0 i$ v1 D
  68.     }# a: V$ g* f; ~1 T  Y
  69. }
复制代码
getColorPic(String f, String path) 参数说明: f是图片导出的txt文件, path是保存图片的路径

点评

请问,还有 EPWING 转 MDX 的 工具 吗?  发表于 2018-9-6 14:32

评分

1

查看全部评分

该用户从未签到

发表于 2014-6-2 17:03:11 | 显示全部楼层
本帖最后由 meigen 于 2014-10-10 20:19 编辑
$ w* R* R7 Y& t8 D! ^+ d6 a* V/ V; M( P3 U" _! y8 F& v' y
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
! P/ R) R8 U8 v- K先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)( o% q. S2 G0 N) D% A3 h
可以看到6 ^0 f. X1 R- `3 p; [8 R6 w& u# H
<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]' N- k2 Z% f5 W  |; o
这里的w=200,h=256表示图片的尺寸,这个参数后面会用到2 [( F) |1 C3 V" t: J
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
  T2 u4 m1 x  \) |先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:- T1 ^0 N+ ]6 o6 _2 |8 C5 q5 |
  1. static void getMonoTag(String f) {" a2 X5 Q  W$ M+ [6 O/ L( {) T% u8 D
  2.     try {
    $ O% S& _+ R% U+ b
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));, q& @( e9 w9 A. m. @
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));( o  j4 ^; }/ T2 ~
  5.         String line;  A$ @  g( d% \8 Y: ^- K" ]
  6.         ArrayList<String> monos = new ArrayList<String>();
    ! ~% E; K5 n. Y: m! g1 w
  7.         while (((line = reader.readLine()) != null)) {7 s6 H, U/ W9 ~8 }; t7 C& N: n
  8.             while (line.contains("<1F64>")) {
    - E& \+ \. h4 S) C
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);  r' e- M& O7 K# Y% F$ l
  10.                 monos.add(line.substring(0, 15));, r" v4 }* _3 ^. J! l. {; T6 N
  11.             }
    . o7 m8 k, V% y+ u0 J+ x, I' O
  12.         }" s! B& E6 X3 Z
  13.         reader.close();
    * O  e8 f* J1 n0 _; C7 J
  14.         String[] monoa = new String[monos.size()];9 T& \  n# h0 c& @/ a% v9 Y
  15.         monos.toArray(monoa);6 }8 z' y& t* y. `1 ]% N, W" a, [
  16.         Arrays.sort(monoa);
      w2 Q2 y+ S) q) z
  17.         String last = "";9 c4 N9 r6 l* U
  18.         for (int i=0; i<monoa.length; i++) {/ ]! ]# B6 y' l
  19.             if (!monoa[i].equals(last))
    " d4 Q! S3 C) g" x) Z/ v* }
  20.                 writer.write(monoa[i] + "\r\n");& {; Y2 G; J  ~; v" k
  21.             last = monoa[i];
    6 a$ u0 K1 c9 X7 @
  22.         }
    * w# a" h& O6 D' A/ S
  23.         writer.close();7 o0 @( }# r$ [3 [# }6 j
  24.     } catch (Exception e) {7 [- ]( W; u; j1 b
  25.         e.printStackTrace();, K# K" c3 ]/ y0 D" w4 T
  26.     }
    ) w3 L- G3 ?* l3 b7 X. O. Q
  27. }
复制代码
6 t0 R0 u1 }! }
得到了一个.mono.txt的文件8 h4 y" X2 Z2 B& Q/ |& Z, F8 r
然后开始提取:+ Z: i/ c* i& B4 l7 Z2 @$ h9 g: B
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -; c7 Q  r( _: r  `& I
提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式: p* }1 T" v( P# c! O2 k7 y2 ?
  1. static final int WIDTH = 256;# c9 n+ y  v( J+ [+ |9 y# u' ?
  2. static final int HEIGHT = 200;
    , v9 _  z- n. v
  3. static final int WIDTH2 = 32;0 Y0 F& H  u+ b+ z$ ]( \" G3 ]
  4. static final int SIZE = WIDTH2 * HEIGHT;; o1 S0 T) `+ z  i
  5. static final int FILE_LEN = SIZE + 62;
    . x$ L9 v) u3 [7 h6 g, r
  6. static byte[] filehead = {0x42, 0x4d,
    # D$ s: j; H& M
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),& U6 Z( l5 A! a+ z: S4 I
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};. u' p4 |) H5 d6 Q* S3 K' }
  9. static byte[] infohead = {0x28, 0, 0, 0,. N/ `' x) f+ o2 C" U( z% m0 T: m( z
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),
    5 l; U! {1 x* X4 Y' j* n6 T- Y
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),
    ) N9 u/ }$ P8 V; W* z$ _6 E
  12.     1, 0, 1, 0, 0, 0, 0, 0,, ?4 I& l% w) a
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),
    & M+ ~$ r' V3 R# ^
  14.     0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0};" m* q. j1 g+ \  R9 @1 V
  15. static void getMonoPic(String f, String m) {# p3 w/ N( b1 B2 {7 O
  16.     try {
    ! i, X$ H. W& T* P0 ?
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    ; y' k- C8 M# ^  U
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));; n% ]' c. U1 J: F
  19.         OutputStream out = null;
    , e/ ]+ m' \: f2 b5 j+ |+ D
  20.         String line = "";
    ! z" w' c( i7 \+ Y4 x- {
  21.         String line2 = reader2.readLine();
    ; j8 H) V7 ]( U1 }0 l3 Z
  22.         int block = 0;
    9 J( q, Y5 @2 v: ^# c- s& F6 H! E
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);
    4 F/ l2 r( i* D- W1 K
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);
    2 q7 ^8 p  K( _1 v/ W( Y" ~
  25.         byte[] temp = new byte[2048];) _6 Z0 a9 L. Q; v
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];
    % G3 u6 m0 G8 v5 E1 K+ \3 t- r* R
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];
    6 e  U' o. w) ]$ H& u4 F% s" l
  28.         for (int i=0; i<HEIGHT; i++) {2 N% U. T( l- G& K4 o
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;8 e# B5 E# p0 [! a
  30.             for (int j=1; j<WIDTH2; j++)+ O9 h( R5 `' |$ n* {# I
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;# n+ W) L2 n/ I' ]) V
  32.         }
    - P* d% }- F' l- d3 ~9 C6 t
  33.         int idx = 0;0 h  f5 P" l. X) S3 U% D$ g  p
  34.         int didx = 0;
    . y' c% M+ n& W' n1 D; e1 Q
  35.         while (((line = reader.readLine()) != null)) {
    ' ~& l7 z( u4 H: j# V/ ]2 p% Q
  36.             if(line.startsWith("block")) {' o, z$ g5 L4 j2 G' p
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);7 `7 G/ i  c: a! a6 V' T/ B& z% S2 `
  38.                 idx = 0;/ ]: C/ e9 z4 K& @
  39.             }
    # A1 l5 ~; M5 k6 H- M: T
  40.             if(line.startsWith("0")) {
    9 d& T) [9 k6 ?3 a0 ^) b
  41.                 for(int i=0; i<16; i++) {$ C/ N# i0 x$ ~/ [, K- y
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));% R% D! {/ t2 k3 u. q$ O
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    & V) c2 }; H' W; W$ z6 C" {' `
  44.                     temp[idx++] = (byte) (a << 4 | b);
    * r; H9 {7 h" z8 a8 N% B
  45.                 }
    - G# e1 W/ j2 i
  46.             }
    + j, C, B% E0 d9 @
  47.             if (idx == 2048) {+ @2 j; b! U% l# A
  48.                 if(block < block2) continue;% Y( A! t0 a; j$ K. ^
  49.                 int start = offs;& |. [( E) k8 k
  50.                 if(didx != 0) start = 0;
    " W* y5 F, A' b2 V
  51.                 for(int i=0; i<2048; i++) {
    0 v, F! x$ @0 ~
  52.                     if(i >= start)
    # h' Q. D) v4 i+ A9 O
  53.                         data[idxs[didx++]] = temp[i];9 W* X; w) F- U5 W
  54.                     if(didx == WIDTH2 * HEIGHT) {
    * B. \8 e9 m7 k1 U( q
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));# M: D, ]" q. y# h* s! {  A
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));/ {- T4 K( _. A! m; B5 d
  57.                         out.write(filehead);: a" l. j- z& R1 [. C, h
  58.                         out.write(infohead);
    9 C* n; M- |* T6 c- q
  59.                         out.write(data);3 b, n/ {  ?8 w# Q1 d" r! d" V
  60.                         out.flush();0 N+ v+ C8 Q) e4 S' \/ s6 _* F
  61.                         out.close();: v- G2 k/ k0 I" D
  62.                         line2 = reader2.readLine();) Y" m' E  Y3 E4 `$ {* t' w
  63.                         if(line2 == null || line2.equals("")) {
    + ^& s. S6 N9 S& g% B% \
  64.                             reader.close();5 Y/ K6 e  h) ^# q0 q  L
  65.                             reader2.close();, m$ c& Z  P, y( ]/ J
  66.                             return;
    1 p! [$ @$ g/ C3 d
  67.                         }
    % a: \8 y+ n2 L+ q, W7 t
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);
    ! t% o  p* H6 ]
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);( }: S; I4 E8 o( x' ~; K. ~
  70.                         didx = 0;6 @8 e( N& \2 i+ H% H
  71.                     }; L/ X: I' H! i1 R2 t
  72.                 }7 Y, Y  I: {% R4 b0 a" B& |7 e
  73.                 idx = 0;  C0 Q, R9 M, s4 W! C! {6 z- O
  74.             }  Q7 j7 r: A( }1 s
  75.         }0 \3 ]+ \, E* ~' |
  76.         reader.close();, B7 ~- m& {; r6 A1 j2 i! Q9 m
  77.         reader2.close();
    8 A- Z7 c) E; w: e- ~8 T) y
  78.     } catch (Exception e) {# l; z" P: a+ a* n0 W( n$ U
  79.         e.printStackTrace();: N7 w% b% m2 b4 x. \( A# s
  80.     }2 D0 W8 r! |( p3 z  T
  81. }
复制代码
2 X5 B9 I! j. ^+ Z7 H
待编辑...9 q; M& ^1 ?0 V' ~  o
2 P* T6 r# w( Z2 n1 ]* t! _
回15楼:  |0 S4 W. P; |; L4 C7 X4 a6 t1 q
能把代码用附件形式上传么?顺便使用说明用英文。

, S% c8 v9 c# `/ Z. l* j代码有一些要改动的地方, 我完善一下就传附件& g; F4 a/ k* l; l: e) u- G
另外用英文说明这...{:11_336:} 8 b3 t0 n$ Q7 b. D
我先用中文注释一下, 然后再慢慢翻译

评分

1

查看全部评分

  • TA的每日心情
    开心
    2019-8-11 07:55
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2013-8-25 17:56:54 来自手机 | 显示全部楼层
    楼主辛苦了。

    该用户从未签到

    发表于 2013-8-28 11:29:54 | 显示全部楼层

    该用户从未签到

    发表于 2013-10-23 12:56:25 | 显示全部楼层
    这帖子太好了。现在上的课正好跟html,jsp,sql有关,可以有针对性地学一学了~~

    该用户从未签到

    发表于 2013-10-24 09:37:16 | 显示全部楼层
    辛苦了!
  • TA的每日心情
    开心
    2021-1-11 09:04
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2013-11-1 23:10:03 | 显示全部楼层
    对我们这些没有软件基础的可咋整?

    该用户从未签到

    发表于 2013-11-3 10:47:35 | 显示全部楼层
    不懂,只知道怎么使用,仅以回帖表示赞同
  • TA的每日心情
    擦汗
    2025-3-22 09:30
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2013-11-7 08:29:45 | 显示全部楼层
    楼主辛苦了,谢谢分享

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。1 Q! C" H% [; X$ A
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。( a8 Z* v) l7 B/ F5 k
    -
      x% f8 ~5 [3 \+ s一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} - n. |  I3 t: |6 D

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。& T& Z/ H; j" }. _0 s, g' M. N' S! b
    其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2014-1-21 18:03:13 | 显示全部楼层
    看看,学习!谢谢

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!& H* M5 E& z4 D3 q) m1 \1 x, L
    最近打算扒维基来着。

    该用户从未签到

    发表于 2014-6-1 17:32:34 | 显示全部楼层
    好贴收藏。

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 8 I) C6 [4 {$ k0 X& b% y4 A
    提取Epwing词典图片的java代码
    0 X6 y! q6 v4 A. H$ X: i# NEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...

    $ A9 @" k% {$ q& B{:5_227:} 5 f& I, d: ^! l" j! E+ k! L3 r7 D
    7 N2 d" m- t$ K: G
    论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。$ S( H) r* u7 s3 y4 e! J
    能把代码用附件形式上传么?顺便使用说明用英文。5 C& ~0 i+ d) G1 ^9 l
    辛苦辛苦~
    ! P' ]3 `) i7 ~0 W" P( S/ Y

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
      h( R% ^3 b( V0 ?( \/ e3 ]
    meigen 发表于 2014-6-2 17:03 3 s7 @; Q, g* g2 {+ v
    接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情7 r5 G' R3 d- o0 b  A9 `; @# ]3 h" }, t
    我们可以先到词 ...

    2 s6 B0 {  w9 g( |' u
    9 k5 S, T6 {  i& D- Q6 O{:10_240:} , T0 M! ~; s1 Y: F/ y4 H" W; p

    2 u' ?1 W8 p! ^1 s。。。。
    7 e- |+ @1 B: e其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。1 w# e4 M+ [6 x3 R
    http://goldendict.org/forum/viewtopic.php?f=4&t=2922
    1 t6 q. j! j' chttp://goldendict.org/forum/view ... =2091&start=300
    . r: q1 h, @: K' _不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    5 L7 P* |! l& Y6 e8 R! b  ?& P+ Z& m, h- `" V

    该用户从未签到

    发表于 2014-6-8 18:42:15 | 显示全部楼层
    这个帖子太棒了!必须好好学习一下啊。
  • TA的每日心情
    奋斗
    2018-12-10 10:05
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2014-6-23 15:54:42 | 显示全部楼层
    几位大神都离开啊,只求不定期更新词库
  • TA的每日心情
    开心
    2021-5-6 12:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-7-31 20:23:48 | 显示全部楼层
    。。。长期学习阵地

    该用户从未签到

    发表于 2014-8-21 08:12:58 | 显示全部楼层
    文本编辑器:Editpad无论是对正则的支持还是替换的速度已经把EmEditor、Notepad++之流甩开几条街了。
    6 @9 C4 ^5 K3 d+ F% U1 F! ~

    该用户从未签到

    发表于 2015-1-2 00:39:31 | 显示全部楼层
    其实几个程序员常用的文本编辑器功能都蛮强大的,ue功能最多,复杂,emediter不错,对中日韩字体支持最好
  • TA的每日心情
    开心
    2019-5-18 14:33
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2015-10-18 00:11:23 来自手机 | 显示全部楼层
    meigen 发表于 2014-6-2 17:03
    * N( w: q8 V5 |1 g# D接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情% Q7 ?% m3 m. f4 f& }
    先用ebdump提取 ...

    * L, E* ^1 f* _) b: B) u7 U) ~好文,谢谢。

    该用户从未签到

    发表于 2016-1-30 21:11:09 | 显示全部楼层
    不懂,仅以回帖表示赞同
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-18 02:21 , Processed in 0.031689 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表