掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 32027|回复: 45

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

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
/ j; |6 R' R/ g2 l' E# u. ?* Z6 F4 B- B1 Y
4 Q  r7 g8 @& B9 d: R9 d
FAQ& j" s( [, h2 ?+ M. M- T4 Y
>>  未加密的 mdx 如何转为txt?
3 |4 r" L# B1 r7 \工具①,GetDict.exe by yhssdl。下载地址:
" y0 @$ {# X, `6 x: o$ b% w3 I9 ?' E' ahttp://pan.baidu.com/share/link? ... 67&uk=305151372! x7 l; x5 N' W6 z- h9 [
: }! x& }6 l7 B/ g# S- H1 \) _: k; U
>>; l, g; C* [; K% e2 `
[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
& b* \& ~. [  h: [) p% j
) x8 t& o1 Z- D6 P/ Q( y0 k7 U" c$ l4 v2 q6 M1 Y' ]( r1 \( `2 s
老马的原创空间 http://www.cnblogs.com/stronghorse/
# c5 D! A' U4 {8 z# h
- a0 y& N( R. i  G) \4 n: G
) {6 S; }. t. q& @bgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
- m7 j. u# T$ U* _- h4 F. U7 b/ `( e9 j; F

+ `9 ^; y$ S& u, b( V) D$ A3 ?9 z8 q4 u5 o5 [6 n/ a

+ F  i; R, t! G* F- p& \! V9 p/ s5 y3 @+ W
& ]- e; [8 _: e, t( v
整理中,欢迎补充7 I; e/ `# Y9 z+ s. K* V
mdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
( m% @8 e* P0 ~  p正则表达式Regular Expression, html, xml, div+css, % r% l. I! W, |1 \- R
编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
1 w( ?7 G9 `# Y- A" ?: `  h% z% ?程序设计语言:9 @& p" k4 a3 h
Python;C++;% K( X2 b  F5 Y; x! o+ h
Perl
9 Q3 s& o. N3 d" cJavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp% u2 I/ [+ _! T: |) D" d
VBS/VBA% W. a6 O- o5 o
http://www31.ocn.ne.jp/~h_ishida/scripts.html
. ~2 m" e& I3 P数据库软件:
2 g- k! Z, ~- A2 e% E- mNavicat Premium1 t! T5 X5 }4 |; w  N/ }" p
SQLiteSpy,PowerBuilder- O1 J; O5 L1 ?5 a& v
SQLite Expert Professional( f. f4 A: S, _3 o. D0 w
软件:  Z! @& d! e9 M1 S2 K
MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm
2 ~) h& M$ M% V2 o( y+ \2 E5 ?- i$ q, b& \
文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
% P# g( t3 [/ m; q" T' fReplace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq
* o4 I( T7 P! Z1 o% j( oRaptor 3 http://softfie.com/software/hacktool-raptor.html# D: T% _5 U' Q  C4 F3 i; u6 D
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download% p8 {& _/ V. `

$ R/ t6 I7 m) K, IMicroft Office:Word, Excel, Access3 u1 V! q2 n& X2 E+ R: l- g5 m
Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro( I( J- Q$ S4 {' N0 m- Q% o$ [
OCR:ABBYY FineReader+ N; O  w% M$ C; q/ t
DWS: Tlex
. Z# l; @2 _5 X9 {5 h浏览器:Firefox, Chrome/ g; \8 R* V3 b2 [

! Q: Y9 @& |: y. Q# I2 b5 m& P解压缩软件2 P% j5 M; [1 e- ]) l1 r
% B; k: h, N8 g8 L% J8 h# k

3 G8 u  z5 [) B+ Y' z2 ~" {* u离线下载类:
+ l, I( Q( q2 G1 A! W! C& B; fwget, Teleport Pro, OfflineExplorer
5 g% |; d& _3 Q  s6 c! K8 n其他
9 T4 J! c0 z( u# }& m# SFiddler 2,
& K9 @$ v; O7 i6 e7 {5 [SQLiteSpy
0 X; D# g, t/ g5 t/ e. [8 Eyhssdl的GetDict2.68 b: V* I  E% `! d0 R" d5 d
AudioTranscoder
9 U3 p$ k6 {, Z, m8 t, ?按键精灵1 \  o0 ~$ g6 X8 s2 R& p
Tvangeste / dictzip-win324 z; Y  b; {8 ^' e7 Z
https://github.com/Tvangeste/dictzip-win32/releases/% }8 z& L2 q$ c! k+ ~+ Q
) @1 d* u8 Z  w# c& Q  f
dsl相关软件:8 ]. G. E7 b! J# V7 Q0 h
DSLGD2 N+ A/ W1 L7 K: q

+ Z, g7 @9 ^% R) W. B+ E: G5 ?有参考价值的技术(讨论)贴:  H. y4 m4 y1 N
0. superfan892 N! O' V- y& k0 m: t3 b& z% z5 ?
[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码) K& B; S4 f! b5 r3 O
https://github.com/superfan89/IDMSKconv IDMSKconv源码
9 q% M+ L, j# ]+ l& d/ k. bhttp://dicwizard.jp/jamming_ug.html6 s7 O) k- i2 M4 w8 Y3 Y
https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
; n6 U' q5 Z4 H: u" C4 T, N$ |' z5 V. J* J2 |
1. chigre8 m2 R4 t5 E. @6 m! F
【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
& y4 U. A  h, G" J) S各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html
/ F1 [! [* i6 h3 }+ s7 M2 e[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html) Y2 ?8 n) @0 B" \: E

, A- s$ I/ E9 X2 T8 @2. Hugh
  h% ~. T: x# C9 w! p【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html2 V  q) p5 e3 [1 |2 [

& v; I9 |: X2 U  W3. ldlcau& A; A1 k. @6 F1 k1 S( e. {
mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html
7 ~3 W$ F+ C7 W; c/ U  G8 |+ I
, T& E' j% q% Z* Z: I6 ^4. Oeasy  Z; [  R8 p+ d2 g" ?
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html
4 l- v/ l! a- w( D4 A" b% S* a1 t* v0 N' y: }$ u
5. jjcizi3 `# r, [3 S8 H2 v0 Y
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html
7 }/ f( S* Q; V$ a; V; o: T
6 g6 F0 ^( i/ S+ W6. sunsmile23! Q4 y9 s, B2 f6 F' p6 X* F
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
3 `7 n: A' E  G, B; vvba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html
+ {8 E8 ]+ ]5 k* C& y1 Q
7 l) T1 ^% T' e7 C5 ?; T7. sjn01
9 A' Z- D  {) V& @( h求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html$ i; `4 T2 p9 v

6 {6 A6 E+ q6 T8. 惟吾无为6 @/ p$ k; f5 I$ E" A$ _* Z9 ]; d9 W& {
linux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html8 ~7 O. e) n% x3 @' Q
  b2 Q5 Z. Q3 `
9. freegut
7 A, [2 j+ B2 W& i* x分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
1 q# o$ {/ K0 }. c8 H( g5 H- c. g# y
- b. x% x$ ~9 ^# y5 l& T( `8. zhu1234# D# c: R/ p3 ]- r' T2 U
Mdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
  [# s) S& \& m4 n/ S& r/ H! C, X  U
9. 发哥
  S" `( J6 n* t[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。
8 W0 H. \: i& m5 [9 D3 b' S+ h( a' N5 ^5 `& f7 M
10. FHYVUCBRUG - X; S2 L5 Y2 Z/ L$ T
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py
- M% B$ k( m3 M% {) s1 _: @/ c: K9 o0 e0 @( v
11. 手把手教你转换辞典# V/ S* e6 K) u, |1 p
http://bbs.emagic.org.cn/forum.p ... ntable&tid=5278- F- `# d% D: W- J) K9 F! e' f
http://www31.ocn.ne.jp/~h_ishida/scripts.html/ {: U9 C' r6 f5 y

6 }7 X& y3 B" L% B
; h8 M; C' @" f% z--
$ l) x# t+ [5 Thttp://blog.yeshj.com/luodean/. X* L# J$ f+ J( d
老马的原创空间:http://www.comicer.com/stronghorse/index.htm4 Z8 f$ R. h- [8 r' C+ P/ X! k9 p
---
$ v$ ?5 n0 X, L$ Q+ i4 M8 f1.  Ultra Edit中如何删除包含特定内容的行?
  A. g) n7 y; I, \# G
如某文件中有些行含有特定内容PTTAddress
# E& u3 E) Z# G, Q  m8 Y: {a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;
$ h4 A' r+ k" z) Y- O/ gb. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;
2 m0 w7 S3 C0 _' y5 ga. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;
& R: J+ c8 }& `  a" ]b. 在搜索结果中选择拷贝到粘贴板;
- o* S. _6 T: S! ^) z+ H4 _  tc. 新建一空白文件,然后ctrl+v。
( U% m- P5 I8 t8 K. A  P

9 s) l" c1 g) H  A6 R" p/ u( r( g2. 使用wget如何登录后再下载. L+ {2 z% {' M( w2 ]$ G8 S
http://tilt.lib.tsinghua.edu.cn/node/2138 I& _" U- R) k: Q, {( O

/ K" m- B. n0 h% ^3. 如何批量修改文件后缀名?
- X" ]+ e3 o8 L) O" chttp://zhidao.baidu.com/question/423790075.html
% k: l* l' g9 V  I# @  k1 x1 M* D7 Y1 w  t9 ~4 u
4. 如何把多个文本文档合并成一个. w0 W! y2 W, L- G, T. m& M; b
http://zhidao.baidu.com/question/172524472.html& O4 O1 x1 B5 P6 g! c# ?
9 Y" X8 w0 B7 j( }  K4 |
5. EPWING转txt0 f2 Z5 T8 C, F; Y$ v7 E
http://coffeejp.com/bbs/thread-170502-1-1.html  w3 [9 T5 T" q5 J$ j) t" ?5 f
另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/ + `8 ?9 x+ H8 h. v9 Z. C+ L
http://www.coffeejp.com/bbs/forum-22-1.html7 @  k! y% @: F3 d2 m
" ]8 p' Q! j" s
6. bgl2StarDict
0 e+ u2 l2 P4 Ohttp://code.google.com/p/stardict-3/wiki/ConvertBabylon
& m" _: w6 g: n
  q: R. c! m: _' d$ b8 O% t7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器3 c7 o4 i9 z, ?: g3 S2 e
http://code.google.com/p/lingoes-extractor/9 r+ @- W  {9 a( i' H3 r8 n4 x
-
* h' a7 g$ a1 ?* o* M  F  Bhttps://github.com/windylea/lingoes-converter
. C( o! b0 G- }0 y! q; G2 y
) t2 i0 W& u6 o3 I& z8 e$ [3 S8. lsd 2 dsl5 K7 d9 D5 F* o' G. t
http://alabaxblog.info/2013/02/lsd-to-dsl-mass/
8 H- c1 h# C1 ?8 w" ihttp://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/3 q; u! h, l& m9 h

6 _- \2 Y3 m9 A: f$ m& r4 J9 k9. An Analysis of MDX/MDD File Format
! P5 z9 l# w* Z$ E+ d: g; N$ M$ Shttps://bitbucket.org/xwang/mdict-analysis! I' M, `% y6 B7 }% h
http://m.newsmth.net/article/LinuxDev/56948?p=1
7 J' L0 S0 S; n# K3 q7 t6 chttp://mdict.codeplex.com/
( c8 W& X  T( f- m6 ~
' C5 }& ?5 `+ U/ u4 O# h10. . T' a  W: ?; [# f! H& |
http://hanzisearcher.cnblogs.com/
: @# v+ P5 `2 x: u8 G# z2 o# K: N" V8 J/ s# |+ m9 r/ Q8 t9 y
11. RegEx Dotext 1.0" T! t2 Z& g1 C4 t% a3 Z
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等2 w5 R1 v: @" m7 c
https://pdawiki.com/forum/thread-11430-1-1.html
7 [2 ^  a9 X% }/ {' K6 U3 z3 W  e, E7 p
12. awk+wget实现批下载
4 ~$ e, I6 L. khttp://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html
# {" W0 ~- k5 u& U
/ r% ^. m# N' X  [) o13. 【awk学习】gawk+wget+grep写的小爬虫, E& A) q8 ^9 E  [
http://bbs.byr.cn/#!article/Linux/104263, j" T; J" f( n$ f! m, s
' i" T% V2 `3 @3 o( O' d7 O5 Y
14. wget批量下载文件后,如何重命名!7 N- F& m. U) w0 G* X! d) O
http://www.linuxsir.org/bbs/thread321272.html7 r) B4 R1 e7 B( v* K1 U6 I
; w0 K/ k/ ?5 j7 O# ~" o
15. http://www.regexlab.com/
* L' \9 u( _4 ~( x0 X3 f
* }* t7 O  {0 l7 j$ @8 R& V1 V16. EBDump( r9 w& b9 ~% `4 [9 |- r; u
http://www31.ocn.ne.jp/~h_ishida/EBDump.html
4 x$ M8 p/ p4 P* x1 ihttp://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html1 F1 Y; Q1 i# W3 c# Q- c' b
+ O9 R" M$ X; ?+ Q; y, j# h
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)* D+ T  Q7 ~, V9 e* o
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml1 t& l4 q' P8 ^

$ ]$ P8 ]9 J- p# F18. [转]用python爬虫抓站的一些技巧总结
/ W9 U2 W. p3 u* Nhttp://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a$ A0 U" J& U: t: s" Q

% \3 X- y! M) l% j( ~( c19. Python爬虫入门教程
* R3 w8 Z/ |- I4 e3 j7 n* _http://blog.csdn.net/column/details/why-bug.html
6 s/ \. L* }0 Q7 h( C) h# F/ J2 q$ F4 r& i3 h9 E6 b0 @: u+ t; l1 \
=========
& h7 t& u4 [* v* _6 T7 T) VEPWING相关:/ A3 @4 {. y, }3 c- ]  R6 y/ y. Y
http://hp.vector.co.jp/authors/VA021723/dessed/0 e" J! j& ?9 {; T

8 m, o; [3 X5 [. t* b3 e2 \7 g" o

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 $ g; z) c) k7 d( k/ E
: x4 i, q! ]4 T8 r3 v$ O$ t' X0 m
提取Epwing词典图片的java代码
, G  v" w6 D5 N( E% CEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析0 A+ \+ O* y. c3 N
首先是彩图( _( e- C, h4 e8 F
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个2 @. H6 b+ p: ^  [+ E2 n2 W
提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤; \/ r( l- T) \+ Z
先介绍用ebdump导出txt格式然后提取彩图
% K$ S) A/ H: L7 V% [8 w' O2 n
  1. final static char[] DIGITS = {* W7 L/ Q( m% J' m! y* i
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,
    + b) C# V0 v$ ^5 L: t0 c
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
    $ E+ }% ]8 X2 B1 I, k
  4. };. u( k$ }7 p7 e- u# I& a
  5. public static String toHex(int i) {
    7 \# M3 N* h2 `* p" t1 l5 j
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};0 Q% s0 @# \" G) z
  7.         int charPos = 8;9 i; \2 W* I, ^9 l& Z
  8.         int mask = 0xf;
    , X3 f! q3 D' e/ X1 h2 u- C' Y. N
  9.         do {
    % A( g$ g' Z* C1 P" J( S) v. K
  10.             buf[--charPos] = digits[i & mask];, H% _0 {" M! r: G# Q  C4 |
  11.             i >>>= 4;
    - m2 i# s2 y) `: Y( j9 O
  12.         } while (i != 0);/ ^, Y6 h# Z; p$ d- e. K* M) i
  13.         if(charPos > 4) charPos = 4;
    ( q- R% s! B2 r2 n6 F! j4 f" e
  14.         return new String(buf, charPos, (8 - charPos));8 J* Z. T$ }  ^2 s
  15. }
    5 c( b' x( I5 T  L- w
  16. static void getColorPic(String f, String path) {
    $ G( c! Y: K% e& A& g
  17.     try {
    : N9 s/ g3 q; N& A6 j( @
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));5 z0 J2 v' L2 V3 a/ T" N/ N
  19.         OutputStream out = null;
    : U; V) ~6 k, y& U8 V+ i# |
  20.         String line = "";
    . `' y8 a7 {* B! T" i1 l' s5 R  @7 G
  21.         String block = "";) A2 U1 d2 d' @0 B4 ~
  22.         byte[] bs = new byte[2048];
    9 T9 A( t( ^* y! |+ }8 ?
  23.         int idx = 0;
    , _  k+ k+ O, y  a. n7 W) J
  24.         if (!path.endsWith("/")) path += "/";
    6 O. x# W3 i/ k- C* l7 h) j
  25.         File fl = new File(path);, p+ N% b3 R. X# s
  26.         if(!fl.exists()) fl.mkdirs();
    ! c+ D! T% M, _. @
  27.         while (((line = reader.readLine()) != null)) {( V6 _3 F: a  [/ O
  28.             if (line.startsWith("block")) {2 k  O# w! k' Z5 ]; H' X
  29.                 block = line.substring(6, line.indexOf("("));
    8 t# S8 P4 z6 H2 L% r5 H# f
  30.                 System.out.println(block);; C8 N" R7 G" U6 N' R; t3 \
  31.                 idx = 0;
    * a& R# a* _& j  v% a& ~. w4 d
  32.             }. i% c/ u9 L9 b8 P  Q" n
  33.             if (line.startsWith("0")) {' h/ n& s) h5 R
  34.                 for(int i=0; i<16; i++) {
    ; k+ L' `  I+ O, b: o$ G
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    9 K% h! P( U% L$ ^2 W
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));' q; I- P4 S7 U3 [) Z1 _. B
  37.                     bs[idx++] = (byte) (a << 4 | b);
    8 F" k8 x% H9 k3 N% o$ D
  38.                 }
    * M7 q) d' \( _& l, l$ K0 _* [
  39.             }
    # w2 f0 W/ n+ U/ Q2 {+ F; x. Q
  40.             int dts = -1;+ {* W, W$ b+ C: |2 A
  41.             int ws = 0;
    ; O4 M' n5 O- j# A
  42.             if (idx == 2048) {
    * Z$ A1 q+ \  f2 C6 A
  43.                 for (int i=0; i<2044; i++) {7 y& s& ?3 F. U$ C* z# t
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    $ X/ Z; K$ A8 ^- [3 F, o
  45.                         dts = i;6 M6 I3 Q% d" o8 \" n' \$ l* Q4 R
  46.                     }
    : P4 Z6 f# e$ [0 P
  47.                 }6 v) @- P* N) P9 P% D" {
  48.                 if (dts != -1) {
    7 ?) G8 Z7 J2 U! W* l7 p
  49.                     if (out != null) {
    . x; K8 t( {" n. l5 G5 D- o6 I
  50.                         out.write(bs, 0, dts);
    5 x  s5 C/ [* a+ P  _4 F
  51.                         out.flush();
    ) v# U5 y- c% V8 r( R
  52.                         out.close();
    & T: E8 Q+ [& t4 {
  53.                     }) n' p" v7 {' @  [! ~# Z& E
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));2 |- v6 j, k9 s; t# o
  55.                     if(dts > 2040) ws = dts-2040;
    ' K( w+ o) [/ f# E
  56.                     else out.write(bs, dts + 8, 2040 - dts);) r  w+ u" q* o6 ?
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
    0 I) Y2 A" a/ [$ o* _7 d
  58.                 idx = 0;
    . [6 T( B0 a0 k! c
  59.             }" R8 \$ ]4 v* l
  60.         }
    5 Y! \8 l+ D. |- o# p( y
  61.         reader.close();3 M) Y4 ?5 ~/ Y7 ]0 N
  62.         if (out != null) {
    9 L# u! d1 X. T& p# U- i8 I
  63.             out.flush();
    3 \2 y+ u6 E. ~) }
  64.             out.close();/ o( O, O" T5 h5 C( b6 j+ g; g
  65.         }
    6 w( y" J" T3 b
  66.     } catch (Exception e) {" y. @  e) ~8 t7 ]* L+ r
  67.         e.printStackTrace();
      B( Z9 n: J' a
  68.     }1 `7 |. s3 e7 k, d0 x
  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 编辑
7 [  u- z: u' X3 W  G" h
9 _  @6 B* z* H6 ?1 ~; X1 L& z: J接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
# {# k' Q6 G" _. x+ F1 l0 [先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)
+ G# ~  v* {* L( S8 ^; r可以看到
) I3 r9 J* i4 d. s<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]
" V6 e' M% ~7 \这里的w=200,h=256表示图片的尺寸,这个参数后面会用到
! Z8 H2 M. x5 A# _然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了* w# D& A: f' j, I# N- R
先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:) b+ d# p4 E3 ^4 T0 v; g
  1. static void getMonoTag(String f) {. F8 T3 r; k, t( g& b
  2.     try {
    ' _% K; Z* _& h2 e* R) A, V
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    7 J! N7 e! h% u# B( M
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));
    $ l# g, [0 J' R- Z, z# Y+ g
  5.         String line;( s3 g3 A: o0 x1 ?5 v! ]" ]0 h
  6.         ArrayList<String> monos = new ArrayList<String>();
    0 o# g9 v+ N# l# p' [
  7.         while (((line = reader.readLine()) != null)) {
    ( r' T6 {* K3 c  t! A6 q0 C1 d6 {
  8.             while (line.contains("<1F64>")) {) W. P8 x) @" z4 r1 P2 }4 R
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);9 t' z- L# w9 g! U! A& N" B+ x7 o
  10.                 monos.add(line.substring(0, 15));4 V* V8 I/ V7 i4 b# f2 B8 t
  11.             }" |& z+ _) }: h1 q$ x8 {# I# h& E
  12.         }
    $ u8 C# X9 ]6 u- y( u3 V) m4 z
  13.         reader.close();
    2 m& [0 k& [# |/ u
  14.         String[] monoa = new String[monos.size()];
    2 Y# e$ w/ q+ [8 ~2 u1 Z5 ^8 g" z
  15.         monos.toArray(monoa);, K; p( y) T; f' E6 s# R
  16.         Arrays.sort(monoa);
    0 k+ j5 E% Z: B/ n& u6 B6 O3 r% k
  17.         String last = "";' f4 J! B# O4 p* f, N! L( E
  18.         for (int i=0; i<monoa.length; i++) {
    / F- c! R' `7 C$ o( b) e, Z
  19.             if (!monoa[i].equals(last))
    ; X" ?' z- f* O0 {
  20.                 writer.write(monoa[i] + "\r\n");  {1 Q( D  N+ N1 ^9 j& b+ E
  21.             last = monoa[i];
    ) f0 b! J; ^0 k! U" y$ h6 b
  22.         }
    ' f: M/ Z+ P3 K( u
  23.         writer.close();
    ! G; A; {! M4 s
  24.     } catch (Exception e) {
    6 d1 w7 h: J- t! P% Y
  25.         e.printStackTrace();( F' x% m  K6 n7 |
  26.     }
    2 n. `% N6 f8 ^5 a% t- g
  27. }
复制代码

! N3 `6 X! E( s+ K$ _! |" M得到了一个.mono.txt的文件
/ C1 O8 a* i' v  t% D3 R- ~* X然后开始提取:& z% I' [! Z3 q7 a4 I
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -
& R3 g! ?5 @1 ]0 k( I8 n9 D提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式) L7 |9 P! {/ m
  1. static final int WIDTH = 256;; K: @4 C( n4 X) T
  2. static final int HEIGHT = 200;
    ; t+ ^) D0 _$ @5 T
  3. static final int WIDTH2 = 32;' b5 n: B+ i) b  v3 ~
  4. static final int SIZE = WIDTH2 * HEIGHT;
    # X  y2 J' H" F9 y$ k
  5. static final int FILE_LEN = SIZE + 62;& P5 \3 c# f: P& W% E7 i
  6. static byte[] filehead = {0x42, 0x4d,
    " e" L% D4 h1 k9 m# A
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),( I- v2 L$ V, f3 N& P
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};. X4 {7 h2 k6 J! g9 v
  9. static byte[] infohead = {0x28, 0, 0, 0,/ E/ Z: @. W2 V: r
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),0 q1 n3 X& @$ n. O0 F
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),2 I) c5 R4 k# X& J
  12.     1, 0, 1, 0, 0, 0, 0, 0,
    8 b5 c- h  N$ u4 W, ~0 C
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),
    2 k- Z" E. A. A/ U- U
  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};
    ( a6 i2 r# _9 I1 R
  15. static void getMonoPic(String f, String m) {, X5 o6 `, }. q  K# e9 Y! N
  16.     try {
    / N8 l% D( K' }! ~5 ^1 d- `
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    ! r- q8 ^; J- e3 O) n
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));
    ( S7 Y8 j0 K/ F# H
  19.         OutputStream out = null;
    , h  @) q& F% S0 T2 R7 h
  20.         String line = "";( T- R# u# d9 R
  21.         String line2 = reader2.readLine();
    5 ^% k: U) h& B
  22.         int block = 0;8 ^+ B# w( N, X# f4 c6 T! |
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);1 z& i1 X5 ^: a3 T9 ]
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);
    ' _5 v- \: y: j# S5 \; [8 I
  25.         byte[] temp = new byte[2048];
    * z+ o  {" x( q% q( f
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];
    : @# A; B; w% @4 H$ ^. l
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];
    - Q% P1 n" o$ M* E1 s
  28.         for (int i=0; i<HEIGHT; i++) {, e9 a% {2 i8 p) T
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;& v0 C: s) D. @8 W4 C- q
  30.             for (int j=1; j<WIDTH2; j++)
    9 K9 R( C+ R. d. S$ \/ t9 |+ `8 a7 z
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;. d  L/ g0 P- J. F3 d! |; a7 V
  32.         }  |5 _5 s( s" f* K/ M8 J
  33.         int idx = 0;) k( k: q: D+ F; \( k/ X, t
  34.         int didx = 0;4 i3 s1 \( U& q& Z; L# k* J$ Q
  35.         while (((line = reader.readLine()) != null)) {; z6 A& T" [$ q" `
  36.             if(line.startsWith("block")) {# l. V1 J' T" ]) e* G) x
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);8 @: a+ I  ~" E' G. c
  38.                 idx = 0;& g* I: a9 D# C  L6 {2 ^7 a
  39.             }
    3 o4 U+ R) c; ?
  40.             if(line.startsWith("0")) {
    ' d  V( j/ z+ p2 e* Q
  41.                 for(int i=0; i<16; i++) {
    / F' |& U% s0 q8 x( D
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    & M8 \. R- K9 d  S% [
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));1 i9 l0 }% r( Q- D/ o* ]- K" x' f1 S
  44.                     temp[idx++] = (byte) (a << 4 | b);. C) }- O; `6 `  V
  45.                 }) H8 i0 L: ~4 L+ b0 A
  46.             }
    $ b. J+ \, ^- L# e; h
  47.             if (idx == 2048) {
    + }/ z& _* C" S- V0 Q0 e
  48.                 if(block < block2) continue;
    7 v7 l, i+ `# d  K% e6 p  B$ q6 R# E- T
  49.                 int start = offs;5 x6 _& b/ [( l- @8 z
  50.                 if(didx != 0) start = 0;1 u* P- l0 ~2 T+ D+ j# y7 Y$ s
  51.                 for(int i=0; i<2048; i++) {
    7 S- W7 l; p) {5 L3 ~
  52.                     if(i >= start)" H8 O. y: n' l. ~
  53.                         data[idxs[didx++]] = temp[i];. g8 D4 V- G: i2 v+ W4 P+ l
  54.                     if(didx == WIDTH2 * HEIGHT) {
    ! f6 p# ]- C4 }/ `) i- Y
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));
    * t# c0 k  f" o7 O
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
    0 j; l8 f# S$ U1 u# Z
  57.                         out.write(filehead);% G" j: d# W- B
  58.                         out.write(infohead);: H/ \8 C2 x$ o
  59.                         out.write(data);1 l& }- L7 F& R- \2 L
  60.                         out.flush();, K" ~, [) {- A9 K9 S* R: ]
  61.                         out.close();9 V5 r: M0 h6 U) d2 ]
  62.                         line2 = reader2.readLine();2 z, r' r; H; o) |  t
  63.                         if(line2 == null || line2.equals("")) {
    3 ^0 M& V) X' N8 j
  64.                             reader.close();  C. k5 M$ _% }) k6 _+ w5 S: B
  65.                             reader2.close();
    0 G- r4 O0 M4 k4 U* n
  66.                             return;
    ( L+ M$ h1 }9 k) U
  67.                         }) p  X! Q9 G" m6 S9 _% W- Q& B
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);
    # b% Z, `9 p, j2 f: r
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);
    . f" r. a% O; e7 p( z) v
  70.                         didx = 0;" o, @) t2 ^& f( O6 U& {
  71.                     }; f, F3 f! q& n% X& p! d* y( i4 E; g
  72.                 }
    # ~1 w6 W) w; p3 J$ [2 f
  73.                 idx = 0;
    & u! R. j' P; o
  74.             }
    ; O5 ]+ U/ W" v( p5 |9 \
  75.         }2 o/ S8 G; K$ A0 g4 b4 `( e( k
  76.         reader.close();
    2 c8 v, T) O# F
  77.         reader2.close();
    8 T( S5 I7 [; o; C8 o" k5 }* F
  78.     } catch (Exception e) {
    0 r4 a! W! X( S( u5 V9 `1 r
  79.         e.printStackTrace();
    7 Y" ?4 S$ ^. _) J5 b  m
  80.     }5 [$ }1 K! `; _; r$ q
  81. }
复制代码
5 z# j( H  @! K! C1 C
待编辑...
3 T; e4 l7 }# p( e% J/ u+ `  v0 S! s, A2 u; t2 |
回15楼:
, E- l& u. b7 T/ _. F
能把代码用附件形式上传么?顺便使用说明用英文。

# j9 H# a) c" W( C9 g代码有一些要改动的地方, 我完善一下就传附件
* m3 W) K2 \3 A; L/ k) x' ]另外用英文说明这...{:11_336:} 5 D! S7 ]* |2 n( v' I# F% q  H
我先用中文注释一下, 然后再慢慢翻译

评分

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 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。9 U; s, m3 ^4 W' Q6 t- H7 e
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。
    3 s) {8 w( i: I, [, @  W$ D6 j8 s-
    ) M$ z% {" v  R& k! K一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} 9 ^7 ?* E1 [$ Y( X& w

    该用户从未签到

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

    [LV.5]常住居民I

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

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!
    0 I# X1 z6 A" }. X3 X最近打算扒维基来着。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 ; h! D. j( b1 J6 v6 |8 Q
    提取Epwing词典图片的java代码
    # b. B# x$ E. ZEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...
    1 C. c3 Q6 L# ?
    {:5_227:}
    3 Z( m6 @) Q: n- `$ b
    - I5 f  }: L( k. X- m论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。7 Z4 ~; |( F8 |0 T; O2 F7 Z
    能把代码用附件形式上传么?顺便使用说明用英文。
    8 g. e& V2 [9 \! w5 @辛苦辛苦~  ^" H! z, g  ^2 [

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    6 D, @- N4 B" \* X, }3 }
    meigen 发表于 2014-6-2 17:03
    - j8 m, j9 I) t1 r( \$ L% V接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情
    , B4 Q3 G: l  t' D. X) J; T- b% J我们可以先到词 ...
    0 m, B1 ^  K/ V4 e, D" M

    " b; g+ B9 g+ p6 u3 l$ `{:10_240:}
    : H3 j/ D: Y" }1 Z* Z+ `: Y7 Q/ s- \# s+ i: q
    。。。。% l$ ]- z4 ?8 g& B6 L9 P
    其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。
    7 v3 G: L# l0 T. L  phttp://goldendict.org/forum/viewtopic.php?f=4&t=2922$ v) C9 W+ v- R( D# v  y" R( l
    http://goldendict.org/forum/view ... =2091&start=3007 v7 H3 L" }0 o" H: `+ G
    不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    8 A2 x& O4 [9 `+ K1 f" K5 M9 C) W9 Z& }& t
    0 k  J  N: O. Y7 S

    该用户从未签到

    发表于 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++之流甩开几条街了。4 K" U6 @0 b8 R

    该用户从未签到

    发表于 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; T  B8 H" Q* Z7 j7 K5 D
    接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
    7 q# X6 p4 Z' u( V" d3 s& Q7 X# A先用ebdump提取 ...

    - c1 N- ?. U. }# G好文,谢谢。

    该用户从未签到

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

    本版积分规则

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

    GMT+8, 2026-10-21 08:46 , Processed in 0.033117 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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